Python 熊猫:在多指标上计算
我有一个数据帧,如: 我想减去如下值: 减去 到目前为止我尝试的内容(数据帧:): 我可以做到:Python 熊猫:在多指标上计算,python,pandas,Python,Pandas,我有一个数据帧,如: 我想减去如下值: 减去 到目前为止我尝试的内容(数据帧:): 我可以做到: d[0:5] - d[0:5] 所有的值都是零 但如果我这样做: d[0:5] - d[5:] 我得到了所有值的NaN。你知道我怎么做这样的手术吗 编辑: 有效的是 dfl.unstack(['a','b'])['data'][5:] - dfl.unstack(['a','b'])['data'][0:5].values 但是感觉有点笨拙您可以使用loc选择第一级中与一个标签对应的所有
d[0:5] - d[0:5]
所有的值都是零
但如果我这样做:
d[0:5] - d[5:]
我得到了所有值的NaN。你知道我怎么做这样的手术吗
编辑:
有效的是
dfl.unstack(['a','b'])['data'][5:] - dfl.unstack(['a','b'])['data'][0:5].values
但是感觉有点笨拙您可以使用
loc
选择第一级中与一个标签对应的所有行,如下所示:
In [8]: d.loc[0]
Out[8]:
data ...
a 0.17 1.00
b 0 5 10 500 0 5
d
0.0 11.098909 9.223784 8.003650 10.014445 13.231898 10.372040
0.3 14.349606 11.420565 9.053073 10.252542 26.342501 25.219403
0.5 1.336937 2.522929 3.875139 11.161803 3.168935 6.287555
0.7 0.379158 1.061104 2.053024 12.358577 0.678352 2.133887
1.0 0.210244 0.631631 1.457333 15.117805 0.292904 1.053916
所以做减法看起来像:
In [11]: d.loc[0] - d.loc[1000]
Out[11]:
data ...
a 0.17 1.00
b 0 5 10 500 0 5
d
0.0 -3.870946 -3.239915 -3.504068 -0.722377 -2.335147 -2.460035
0.3 -65.611418 -42.225811 -25.712668 -1.028758 -65.106473 -44.067692
0.5 -84.494748 -55.186368 -34.184425 -1.619957 -89.356417 -69.008567
0.7 -92.681688 -61.636548 -37.386604 -4.227343 -110.501219 -78.925078
1.0 -101.071683 -61.758741 -37.080222 -3.081782 -103.779698 -80.337487
很容易。我只是花了一个小时到处玩。
In [11]: d.loc[0] - d.loc[1000]
Out[11]:
data ...
a 0.17 1.00
b 0 5 10 500 0 5
d
0.0 -3.870946 -3.239915 -3.504068 -0.722377 -2.335147 -2.460035
0.3 -65.611418 -42.225811 -25.712668 -1.028758 -65.106473 -44.067692
0.5 -84.494748 -55.186368 -34.184425 -1.619957 -89.356417 -69.008567
0.7 -92.681688 -61.636548 -37.386604 -4.227343 -110.501219 -78.925078
1.0 -101.071683 -61.758741 -37.080222 -3.081782 -103.779698 -80.337487