Как обновить серию на основе другого кадра данных панд - PullRequest
0 голосов
/ 24 мая 2018

Я хочу обновить данные, основываясь на других данных, потому что я просто собираю более качественные данные, вот пример набора данных

Вот мои данные

No  Country    Language    Capital
1   Indonesia  Bahasa      Jakarta
2   Malaysia   Bahasa      Kuala Lumpur
3   Brunei     Bahasa      Bandar Seri Begawan
4   Nigeria    English     Abuja

Мой второй кадр данных

Nation     Capital City
Malaysia   Lagos
Nigeria    Putrajaya

Что я хочу, это

No  Country    Language    Capital
1   Indonesia  Bahasa      Jakarta
2   Malaysia   Bahasa      Putrajaya
3   Brunei     Bahasa      Bandar Seri Begawan
4   Nigeria    English     Lagos

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Сначала создайте серию из нового сопоставления:

s = df2.set_index('Nation')['Capital City']

Затем используйте pd.Series.update для обновления вашей серии на месте:

df1['Capital'].update(df1['Country'].map(s))
0 голосов
/ 24 мая 2018

Вы можете использовать новые Series с map, которые создают для несуществующих Nation с NaN с, которые заменяются на 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

Или более медленное решение с replace:

df1['Capital'] = df1['Country'].replace(s)
...