首页 > 解决方案 > 大熊猫行的聚合

问题描述

我正在尝试解析和组织交易历史文件。
我试图将具有相同类型的每 3 或 4 行聚合在一起:BUY 或 SELL 在一起,如果它们仅在彼此之后出现。如果他们不这样做,那么我只想坐一排。
正如您在下面的示例中看到的那样,我希望将它们汇总在一行中,然后再进行另一行卖出交易。
在具有汇总交易价格和金额的新 df 中。csv 链接:https ://drive.google.com/file/d/1GoDRdI7G8uJzuLoFrm5InbDg23mAwW6o/view?usp=sharing 在此处输入图像描述

标签: pythonpandas

解决方案


您可以使用它来获得您正在寻找的结果。当前一个值不等于当前值时,我使用累积和。

dictionary = { "BUY": 1, "SELL": 0}
df['id1'] = df['Type'].map(dictionary)
df['grp'] = (df['id1']!=df['id1'].shift()).cumsum()

groupby现在您可以使用如下所示的简单方法聚合这些值。这将汇总每次连续买卖的金额 df.groupby(['grp'])['Amount'].sum()

这是 grp 列的输出。

Type    grp
0   BUY 1
1   BUY 1
2   BUY 1
3   BUY 1
4   SELL    2
5   SELL    2
6   SELL    2
7   SELL    2
8   BUY 3
9   SELL    4
10  BUY 5
11  SELL    6
12  BUY 7
13  SELL    8
14  BUY 9
15  BUY 9
16  SELL    10
17  SELL    10

推荐阅读