MisterT
MisterT

Reputation: 77

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 ?

Upvotes: 1

Views: 614

Answers (1)

jezrael
jezrael

Reputation: 862481

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

Upvotes: 1

Related Questions