我有以下两个数据框:

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_valuesreset_index来对齐索引:

d2['B'] = d1['B'] - d2.sort_values('A')['B'].reset_index(drop=True)

方法2:
或者将numpy.arrayto_numpy一起使用,这样我们可以忽略排序后索引中的未对齐:
d2['B'] = d1['B'] - d2.sort_values('A')['B'].to_numpy()

方法3:
我们还可以将map中的Ad1合并到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/

10-12 18:23