我有以下两个 DataFrame :
d1 = pd.DataFrame({'A':[1,2,3],'B':[10,20,30]})
A B
0 1 10
1 2 20
2 3 30
d2 = pd.DataFrame({'A':[1,3,2],'B':[10,20,30]})
A B
0 1 10
1 3 20
2 2 30
我想减去这两个 DataFrame d1 - d2
,预期结果:
A B
0 1 0
1 3 -10
2 2 10
最好的方法是什么? 有人可以帮助我吗?
最佳答案
方法1:
使用sort_values
和reset_index
来对齐索引:
d2['B'] = d1['B'] - d2.sort_values('A')['B'].reset_index(drop=True)
方法2:
或者将numpy.array
与to_numpy
一起使用,这样我们就可以在排序后忽略索引中的未对齐情况:
d2['B'] = d1['B'] - d2.sort_values('A')['B'].to_numpy()
方法3:
我们还可以将d1
的A
列映射
到d2
,这样就可以对齐两个数据框中的 B
列:
d2['B'] = d2['B'] - d2['A'].map(d1.set_index('A')['B'])
输出
A B
0 1 0
1 3 -10
2 2 10
关于python - 减去数据框的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58835624/