Reputation: 207
I want to replace values in a pandas Series
using a dictionary. I'm following @DSM's accepted answer like so:
s = Series(['abc', 'abe', 'abg'])
d = {'b': 'B'}
s.replace(d)
But this has no effect:
0 abc
1 abe
2 abg
dtype: object
The documentation explains the required format of the dictionary for DataFrames
(i.e. nested dicts with top level keys corresponding to column names) but I can't see anything specific for Series
.
Upvotes: 7
Views: 14118
Reputation: 210842
You can do it using regex=True
parameter:
In [37]: s.replace(d, regex=True)
Out[37]:
0 aBc
1 aBe
2 aBg
dtype: object
As you have already found out yourself - it's a RegEx replacement and it won't work as you expected:
In [36]: s.replace(d)
Out[36]:
0 abc
1 abe
2 abg
dtype: object
this is working as expected:
In [38]: s.replace({'abc':'ABC'})
Out[38]:
0 ABC
1 abe
2 abg
dtype: object
Upvotes: 8