rename elements in a column of a data frame using pandas

Question:

Using pandas:

df = pd.DataFrame({'n':['d','a','b','c','c','a','d','b'], 'v':[1,2,1,2,2,1,1,1]})

How can I rename the elements in df.n, such that a changes to x, b to y, c to w and d to z, resulting in:

   n  v
0  z  1
1  x  2
2  y  1
3  w  2
  ...
Asked By: HappyPy

||

Answers:

You can pass a dictionary of replacement values into the Series replace method:

In [11]: df['n'].replace({'a': 'x', 'b': 'y', 'c': 'w', 'd': 'z'})
Out[11]: 
0    z
1    x
2    y
3    w
4    w
5    x
6    z
7    y
Name: n, dtype: object

In [12]: df['n'] = df['n'].replace({'a': 'x', 'b': 'y', 'c': 'w', 'd': 'z'})
Answered By: Andy Hayden

You can also use the below one:

df['n'].replace(['a', 'b', 'c', 'd'], ['x', 'y', 'w', 'z'])

This will replace all the a with x, b with y, c with w, and d with z. Note: if you pass two lists they both must be the same length.

Answered By: mpriya

Slightly Modified from above:

movies[‘price’].replace({"$":"low","$$":"moderate","$$$":"high","$$$$":"very high"},inplace=True)

"Use inplace =True " otherwise dataframe won’t be updated.

Answered By: saurabh ghosh
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.