Python 计算具有相同列和一些不匹配行的两个数据帧之间的差异
df1 df2 假设我有两个如上所示的熊猫数据帧,问题:我如何计算这两个数据帧之间的差异,以得到如下所示的最终数据帧 预期产出Python 计算具有相同列和一些不匹配行的两个数据帧之间的差异,python,pandas,Python,Pandas,df1 df2 假设我有两个如上所示的熊猫数据帧,问题:我如何计算这两个数据帧之间的差异,以得到如下所示的最终数据帧 预期产出 结果DF 我已经尝试过的内容:我通过将两个数据帧合并在一起,然后计算两列之间的差异来获得结果。提出这个问题是为了看看是否还有其他有效的方法。我似乎找不到groupby减法,所以我将你的第二个df乘以-1,所以和可以得到想要的结果 fileName obj1 obj2 obj3 obj4 file_01.jpg 0 1 -1
结果DF
我已经尝试过的内容:我通过将两个数据帧合并在一起,然后计算两列之间的差异来获得结果。提出这个问题是为了看看是否还有其他有效的方法。我似乎找不到groupby减法,所以我将你的第二个df乘以-1,所以
和
可以得到想要的结果
fileName obj1 obj2 obj3 obj4
file_01.jpg 0 1 -1 0
file_02.jpg 0 0 0 0
file_03.jpg 1 2 0 1
file_04.jpg 0 -3 -1 -2
我想你很接近。我只想:
- 外接
- groupby文件名和
- 重置索引
谢谢杰夫!我只是在寻找其他方法来达到效果,这是很有帮助的!
fileName obj1 obj2 obj3 obj4
file_01.jpg 1 2
file_02.jpg 1 1
file_04.jpg 3 1 2
fileName obj1 obj2 obj3 obj4
file_01.jpg 0 1 -1 0
file_02.jpg 0 0 0 0
file_03.jpg 1 2 0 1
file_04.jpg 0 -3 -1 -2
obj_cols = ['obj1', 'obj2', 'obj3', 'obj4']
df2[obj_cols] *= -1
pd.concat([df1, df2]).groupby(['fileName'], as_index=False).sum()
fileName obj1 obj2 obj3 obj4
0 file_01.jpg 0 1 -1 0
1 file_02.jpg 0 0 0 0
2 file_03.jpg 1 2 0 1
3 file_04.jpg 0 -3 -1 -2
In [25]: df1
Out[25]:
a value
0 2 33
1 3 10
2 5 2
In [26]: df2
Out[26]:
a value
0 1 -1
1 3 2
2 5 -50
In [27]: df3 = df1.merge(df2, how='outer')
In [28]: df3
Out[28]:
a value
0 2 33
1 3 10
2 5 2
3 1 -1
4 3 2
5 5 -50
In [29]: df3.groupby('a').sum().reset_index()
Out[29]:
a value
0 1 -1
1 2 33
2 3 12
3 5 -48