Python 大熊猫分组汇总结果

Python 大熊猫分组汇总结果,python,pandas,Python,Pandas,我有下一个数据帧: 库存颜色15M_c 60M_c mediodia 1D_c 1D-15M_c 0 PYPL rojo 0.32 0.32 0.47-0.18-0.50 1毫英尺佛得角-0.11 0.38 0.79-0.48-0.35 2 PYPL verde-1.44-1.23 0.28-1.13 0.30 3伏rojo-0.07 0.23 0.70 0.80 0.91 4 JD rojo 0.87 1.11 1.19 0.43-0.42 5FB verde 0.20 0.05 0.22-0

我有下一个数据帧:

库存颜色15M_c 60M_c mediodia 1D_c 1D-15M_c
0 PYPL rojo 0.32 0.32 0.47-0.18-0.50
1毫英尺佛得角-0.11 0.38 0.79-0.48-0.35
2 PYPL verde-1.44-1.23 0.28-1.13 0.30
3伏rojo-0.07 0.23 0.70 0.80 0.91
4 JD rojo 0.87 1.11 1.19 0.43-0.42
5FB verde 0.20 0.05 0.22-0.66-0.82
..    ...    ...    ...    ...       ...   ...       ...
282克佛得角0.14 0.06 0.47 0.51 0.37
283佛得角联邦储备银行0.09-0.08 0.12 0.22 0.12
284 MSFT rojo-0.16-0.23-0.06-0.01 0.14
285佛得角-0.14-0.41-0.07 0.20 0.30
286 V verde-0.02 0.00 0.28 0.42 0.45
首先,我按照“股票”和“颜色”进行分组,然后使用下面的代码:

marcos=['15M_c'、'60M_c'、'mediodia'、'1D_c'、'1D-15M_c']
grouped=data.groupby(['stock','color']))
res=分组[marcos].agg([np.size,np.sum])
所以在'res'中,我得到下一个数据帧:

15M_c 60M_c mediodia 1D_c 1D-15M_c
大小总和大小总和大小总和大小总和大小总和大小总和
原色
AAPL rojo 10.0-0.46 10.0-0.20 10.0-0.33 10.0-0.25 10.0 0 0.18
佛得角8.01.398.02.488.01.068.0-1.578.0-2.88
...   ...      ..    ..    ..    ..       ..    ..    ..    ..       ..    ..
佛得角联邦储备银行15.0 0.92 15.0-0.64 15.0-0.11 15.0-0.89 15.0-1.80
MSFT rojo 11.0 0.47 11.0 2.07 11.0 2.71 11.0 4.37 11.0 3.83
佛得角18.0 1.46 18.0 2.12 18.0 1.26 18.0 0 0.97 18.0-0.54
PYPL rojo 9.0 1.06 9.0 2.68 9.0 5.02 9.0 3.98 9.0 2.84
佛得角17.0-1.57 17.0-2.40 17.0 0 0.29 17.0-0.48 17.0 1.08
V rojo 1.0-0.22 1.0-0.28 1.0-0.36 1.0-0.29 1.0-0.06
佛得角9.0-1.01 9.0-1.42 9.0-0.86 9.0 0.58 9.0 1.61
然后我想对每个“股票”的“verde”行和“rojo”行求和,但将rojo和乘以-1。我想要的最终结果是:

15M_c 60M_c mediodia 1D_c 1D-15M_c
大小总和
股票
AAPL 18.0 1.85 2.68 1.39-1.32-3.06
...     ..    ..    ..       ..    ..       ..
FB 15.0 0.92-0.64-0.11-0.89-1.80
MSFT 29.0.99 0.05-1.45-3.40-4.37
PYPL 26.0-2.63-5.08。。
V10.0-0.79-1.14。。

非常感谢您的帮助。

根据
color

import numpy as np
for m in marcos:
    data[m] = np.where(data['color'] == 'rojo', -data[m], data[m])
然后您可以完全跳过按颜色分组:

grouped = foo.groupby(['stock'])
res = grouped[marcos].agg([np.size, np.sum])


根据
color

import numpy as np
for m in marcos:
    data[m] = np.where(data['color'] == 'rojo', -data[m], data[m])
然后您可以完全跳过按颜色分组:

grouped = foo.groupby(['stock'])
res = grouped[marcos].agg([np.size, np.sum])

pandas.indexlice
使用
loc
indexlice
更改相应值的符号。然后使用
sum(级别=0)

pandas.indexlice
使用
loc
indexlice
更改相应值的符号。然后使用
sum(级别=0)