python - 合并和覆盖 pandas df 中的值
问题描述
我有两个包含我希望合并和覆盖特定值的df。使用下面,df1
并将df2
被合并,我希望覆盖Group
某些行的值。具体来说,Group
==在哪里Y
,我想使用df2
. 我有办法,但我认为它不是很有效。
df1 = pd.DataFrame({
'Time' : [1,1,1,1,2,2,2,2,2],
'Label' : ['A','B','C','D','A','B','C','D','E'],
'Group' : ['X','X','X','Y','X','Y','X','Y','X'],
})
df2 = pd.DataFrame({
'Time' : [1,2,2],
'Label' : ['D','B','D'],
'Group2' : ['Y1','Y3','Y2'],
})
df_out = pd.merge(df1,df2, how = 'outer')
出去:
Time Label Group Group2
0 1 A X NaN
1 1 B X NaN
2 1 C X NaN
3 1 D Y Y1
4 2 A X NaN
5 2 B Y Y3
6 2 C X NaN
7 2 D Y Y2
8 2 E X NaN
然后我可以复制Group2
到Group
排除 NaN 值,然后删除Group2
,但有没有更有效的方法
解决方案
如果我理解正确,您想df1['Group']
使用df2['Group2']
值进行更新:
df1["Group"].update(df1.merge(df2, on=["Time", "Label"], how="outer")["Group2"])
print(df1)
印刷:
Time Label Group
0 1 A X
1 1 B X
2 1 C X
3 1 D Y1
4 2 A X
5 2 B Y3
6 2 C X
7 2 D Y2
8 2 E X
推荐阅读
- python - python - 如何将dict中的csv格式值转换为python中的JSON格式?
- sql - 在oracle中从字符串中删除重复值
- python - JSON 文件:使用 Python 对不同对象进行单独的字数统计
- ruby - 弃用:HTTParty 将不再覆盖 `response#nil?`。这个弃用警告是什么意思?
- javascript - 更新类 javascript 中函数的结果
- javascript - TypeORM 自定义存储库,从指定列中选择不同的值
- php - Array_combine 错误:输出错误的值并仅给出唯一值 php
- python - 将条件格式应用于excel中的整行
- linux - 从linux中的top命令计算CPU使用率
- python - 无法导入名称“类型”