Учитывая следующие два кадра данных:
df1:
id city district year price
0 1 bjs cyq 2018 12
1 2 bjs cyq 2019 6
2 3 sh hp 2018 4
3 4 shs hpq 2019 3
df2:
id city district year
0 1 bj cy 2018
1 2 bj cy 2019
2 4 sh hp 2019
скажем, некоторые значения в city
и district
из df1
есть ошибки, поэтому мне нужно обновить city
и district
значения 'в df1
значениями df2
на основе id
, мой ожидаемый результат будет следующим:
id city district year price
0 1 bj cy 2018 12
1 2 bj cy 2019 6
2 3 sh hp 2018 4
3 4 sh hp 2019 3
Как я мог сделать это в Pandas? Спасибо.
Обновление:
Решение 1:
cities = df2.set_index('id')['city']
district = df2.set_index('id')['district']
df1['city'] = df1['id'].map(cities)
df1['district'] = df1['id'].map(district)
Решение 2:
df1[["city","district"]] = pd.merge(df1,df2,on=["id"],how="left")[["city_y","district_y"]]
print(df1)
Выход:
id city district year price
0 1 bj cy 2018 12
1 2 bj cy 2019 6
2 3 NaN NaN 2018 4
3 4 sh hp 2019 3
Обратите внимание, что city
и district
для id
равно 3
NaN
с, но я хочу сохранить значения от df1
.