df1 =
A B C D
a1 b1 c1 1
a2 b2 c2 2
a3 b3 c3 4
df2 =
A B C D
a1 b1 c1 2
a2 b2 c2 1
我想比较两个数据帧中列“ D”的值。如果两个数据框的行数相同,我将这样做。
newDF = df1 ['D']-df2 ['D']
但是,有时行数不同。我想要一个显示这样的数据框的结果数据框。
resultDF =
A B C D_df1 D_df2 Diff
a1 b1 c1 1 2 -1
a2 b2 c2 2 1 1
编辑:如果df1和df2中A,B,C中的第一行相同,则仅对每个数据帧比较D列的第一行。同样,对所有行重复此操作。
答案 0 :(得分:3)
使用merge
和df.eval
df1.merge(df2, on=['A','B','C'], suffixes=['_df1','_df2']).eval('Diff=D_df1 - D_df2')
Out[314]:
A B C D_df1 D_df2 Diff
0 a1 b1 c1 1 2 -1
1 a2 b2 c2 2 1 1