我有以下两个数据框:
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
我想将这两个数据帧减法,预期结果:
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:
我们还可以将
map
中的A
列d1
合并到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 - 减去DataFrame的最佳方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58835624/