python - 熊猫根据另一个数据帧更新一个数据帧中特定列中的特定行
问题描述
我有两个数据框,Big 和 Small,我想根据 Small 中的数据更新 Big,仅在特定列中。
这是大:
>>> 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,但在这种情况下,我不想更改每行中的所有列,而只更改特定的列。有没有办法做到这一点?
解决方案
使用DataFrame.update
byID
转换为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
推荐阅读
- reactjs - 开玩笑:react-router 测试返回未定义的“参数”
- php - PHP 两个相等的最大值
- mysql - 使用复合索引和持久列优化 MySQL 查询
- r - R data.table 按创建的列分组
- asp.net - 绝对过期和滑动过期不起作用(缓存)
- selenium - 使用 selenium 网格 docker 集群进行 Webscraping
- ubuntu-16.04 - Editorconfig 没有关于缩进的警告
- ios - 如何在 Xamarin.iOS 上共享指向 Whatsapp 的链接?
- java - While循环查找空格字符-Java
- java - 如何使用流打印HashMap中值的键