我有两个数据框,大的和小的,我想仅根据特定列中的小数据更新大。
这很大:
>>> ID name country city hobby age
0 12 Meli Peru Lima eating 212
1 15 Saya USA new-york drinking 34
2 34 Aitel Jordan Amman riding 51
3 23 Tanya Russia Moscow sports 75
4 44 Gil Spain Madrid paella 743
这很小:
>>>ID name country city hobby age
0 12 Melinda Peru Lima eating 24
4 44 Gil Spain Barcelona friends 21
我想根据来自Small的ID信息更新Big中的行。我还想仅更改特定列,年龄和城市,而不是名称/ country / city...。
因此结果表应如下所示:
>>> ID name country city hobby age
0 12 Meli Peru Lima eating *24*
1 15 Saya USA new-york drinking 34
2 34 Aitel Jordan Amman riding 51
3 23 Tanya Russia Moscow sports 75
4 44 Gil Spain *Barcelona* paella *21*
我知道我们可以进行eupdate,但是在这种情况下,我不想更改每一行中的所有列,而只更改特定的列。有办法吗?
答案 0 :(得分:1)
使用ID
的{{3}}转换为index
并选择要处理的列-此处仅age
和city
:
df11 = df1.set_index('ID')
df22 = df2.set_index('ID')[['age','city']]
df11.update(df22)
df = df11.reset_index()
print (df)
ID name country city hobby age
0 12 Meli Peru Lima eating 24.0
1 15 Saya USA new-york drinking 34.0
2 34 Aitel Jordan Amman riding 51.0
3 23 Tanya Russia Moscow sports 75.0
4 44 Gil Spain Barcelona paella 21.0