我有两个这样的数据帧
df1 = pd.DataFrame({'A': ['1', '2', '3', '4','5'],
'B': ['1', '1', '1', '1','1'],
'C': ['A', 'A1', 'A2', 'A3','A4'],
'D': ['B0', 'B1', 'B2', 'B3','B4'],
'E': ['A', 'A', 'S', 'S','S']})
df2 = pd.DataFrame({'A': ['1', '6', '9', '4'],
'C': ['c', 'c1', 'c2', 'c3'],
'D': ['d1', 'd1', 'd2', 'd3']})
当df1的C,D列在A中得到相同的列值时,我想用df2更新df1的C,D列(如果df1['A']==df2['A'],那么df1['C']=df2['C']和df1['D']=df2['D'])
答案应该是这样的
^{pr2}$我尝试了df1.update(df2)
,但它只是用df2覆盖df1
>df1.update(df2)
> A B C D E
0 1 1 c d1 A
1 6 1 c1 d1 A
2 9 1 c2 d2 S
3 4 1 c3 d3 S
4 5 1 A4 B4 S
我试了pd.merge(df1, df2,how='inner' ,on=['A'])
仍然不是我想要的
A B C_x D_x E C_y D_y
0 1 1 A B0 A c d1
1 4 1 A3 B3 S c3 d3
谁能给我一些建议吗? 谢谢你
我认为这样会更节省空间:
编辑以添加
这可能更有效:
现在您可以找到一个列相等的布尔数组,并使用基于
^{pr2}$loc
的赋值来修改df1
,而不需要额外的列:如果您真的需要原样的df2:
原始答案
这是一种不节省空间的笨重方法:
如果你想要原名:
相关问题 更多 >
编程相关推荐