MisterT MisterT - 1 month ago 14
Python Question

Update values in pandas dataframe

I would like to update fields in my dataframe :

df = pd.DataFrame([
{'Name': 'Paul', 'Book': 'Plane', 'Cost': 22.50},
{'Name': 'Jean', 'Book': 'Harry Potter', 'Cost': 2.50},
{'Name': 'Jim', 'Book': 'Sponge bob', 'Cost': 5.00}
])

Book Cost Name
0 Plane 22.5 Paul
1 Harry Potter 2.5 Jean
2 Sponge bob 5.0 Jim


Changing names with this string :

{"Paul": "Paula", "Jim": "Jimmy"}


to get this result :

Book Cost Name
0 Plane 22.5 Paula
1 Harry Potter 2.5 Jean
2 Sponge bob 5.0 Jimmy


any idea ?

Answer

I think you need replace by dictionary d:

d = {"Paul": "Paula", "Jim": "Jimmy"}
df.Name = df.Name.replace(d)
print (df)
           Book  Cost   Name
0         Plane  22.5  Paula
1  Harry Potter   2.5   Jean
2    Sponge bob   5.0  Jimmy

Another solution with map and combine_first - map return NaN where not match, so need replace it by original values:

df.Name = df.Name.map(d).combine_first(df.Name)
print (df)
           Book  Cost   Name
0         Plane  22.5  Paula
1  Harry Potter   2.5   Jean
2    Sponge bob   5.0  Jimmy