问题
I want to update data based on other pandas dataframe because I just gather better data, here's the example of dataset
Heres my Data
No Country Language Capital
1 Indonesia Bahasa Jakarta
2 Malaysia Bahasa Kuala Lumpur
3 Brunei Bahasa Bandar Seri Begawan
4 Nigeria English Abuja
My second dataframe
Nation Capital City
Malaysia Lagos
Nigeria Putrajaya
What I want is
No Country Language Capital
1 Indonesia Bahasa Jakarta
2 Malaysia Bahasa Putrajaya
3 Brunei Bahasa Bandar Seri Begawan
4 Nigeria English Lagos
回答1:
You can use new Series
with map, which create for non exist Nation
s NaN
s, whcih are replaced by fillna:
s = df2.set_index('Nation')['Capital City']
df1['Capital'] = df1['Country'].map(s).fillna(df1['Capital'])
print (df1)
No Country Language Capital
0 1 Indonesia Bahasa Jakarta
1 2 Malaysia Bahasa Lagos
2 3 Brunei Bahasa Bandar Seri Begawan
3 4 Nigeria English Putrajaya
Or slowier solution with replace:
df1['Capital'] = df1['Country'].replace(s)
回答2:
First create a series from your new mapping:
s = df2.set_index('Nation')['Capital City']
Then use pd.Series.update to update your series in-place:
df1['Capital'].update(df1['Country'].map(s))
来源:https://stackoverflow.com/questions/50504354/how-to-update-series-based-on-other-pandas-dataframe