熊猫根据另一个数据框更新一个数据框中特定列中的特定行

时间:2020-10-14 11:28:12

标签: python pandas updates

我有两个数据框,大的和小的,我想仅根据特定列中的小数据更新大。

这很大:

>>>  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,但是在这种情况下,我不想更改每一行中的所有列,而只更改特定的列。有办法吗?

1 个答案:

答案 0 :(得分:1)

使用ID的{​​{3}}转换为index并选择要处理的列-此处仅agecity

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