如何在忽略索引的情况下,以最快的方式减去2个数据帧。在
例如,我想减去:
d1=
x1
0 -3.141593
0 -3.141593
0 -3.141593
1 -2.443461
1 -2.443461
从
^{pr2}$我所做的:
我可以这样做,例如:
dsub = d1.reset_index(drop=True) - d2.reset_index(drop=True)
不过,我想用最有效的方法做减法。我一直在寻找答案,但我只看到了不考虑速度的解决方案。在
我该怎么做?在
编辑根据一些答案,在我的机器上运行以下几次:
对于较小的数据帧:
方法1(a和b):
a: d1.reset_index(drop=True) - d2.reset_index(drop=True)
b: d1.reset_index(drop=True).sub(d2.reset_index(drop=True))
~1024.91 usec/pass
方法2:
d1 - d2.values
~784.79 usec/pass
方法三:
pd.DataFrame(d1.values - d2.values, d1.index, ['x1-x2'])
~653.82 usec/pass
对于非常大的数据帧,请参阅下面的@MaxU的答案。在
已经有一个内置的数据帧减法。看看DataFrame.sub。在
您的示例中的用法基本上是:
如果数据帧具有相同的列标题,则不需要指定列,例如
^{pr2}$你可以这样做:
或者:
^{pr2}$演示:
更大DFs的时机:
相关问题 更多 >
编程相关推荐