如何压缩范围内的数据框?

时间:2014-10-18 22:06:18

标签: python math pandas stocks

对于每一分钱,我想把这些卷加在一起。

因此,在这个数据集中,所有交易价格在188.415-188.42之间都可以将它们的数量加在一起,所有188.43交易加在一起等等。我目前正在使用熊猫来管理数据,而且我在我不确定我可以通过什么功能实现这一目标。

示例数据:

Time|Volume|Price
09:30:00|200|188.42
09:30:00|500|188.41
09:30:00|100|188.415
09:30:00|100|188.41
09:30:00|590|188.42
09:30:00|100|188.415
09:30:00|100|188.4
09:30:00|200|188.42
09:30:00|900|188.41
09:30:00|249|188.42
09:30:00|100|188.41
09:30:00|300|188.415
09:30:00|300|188.42
09:30:00|100|188.43
09:30:00|100|188.44
09:30:00|900|188.43
09:30:00|200|188.42
09:30:00|100|188.43
09:30:00|100|188.42
09:30:00|500|188.43

1 个答案:

答案 0 :(得分:3)

您可以对Price列进行舍入,将其存储在(临时)approx列中,然后执行groupby/agg operation

df['approx'] = df['Price'].round(2)
df.groupby('approx')['Volume'].sum()

产量

# approx
# 188.40     100
# 188.41    1600
# 188.42    2339
# 188.43    1600
# 188.44     100
# Name: Volume, dtype: int64

或者,您可以放弃approx列并直接将值提供给df.groupby

In [142]: df.groupby(df['Price'].round(2))['Volume'].sum()
Out[142]: 
Price
188.40     100
188.41    1600
188.42    2339
188.43    1600
188.44     100
Name: Volume, dtype: int64