How to update series based on other pandas dataframe

限于喜欢 提交于 2020-01-03 04:02:29

问题


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 Nations NaNs, 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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!