通过n个连续的行聚合熊猫数据帧

时间:2020-07-22 00:27:18

标签: python pandas dataframe aggregate pandas-groupby

我有一个类型为OHLC(打开,高,低,关闭)的熊猫数据框,我尝试不对它进行采样,而不是使用日期,而是简单地通过汇总2个连续的行(理想情况是从数据框的底部开始,意思是即使初始数据帧的行数不偶数,最后一行也总是与另一行聚合在一起:

df = pd.DataFrame( {'Open':[1,2,3,4], 'High':[7,10,8,7], 'Low':[0,1,2,3], 'Close':[4,2,7,4]})


Out[6]: 
   Open  High  Low  Close
0     1     7    0      4
1     2    10    1      2
2     3     8    2      7
3     4     7    3      4

所需的输出是:

   Open  High  Low  Close
0     1     10   0      2
1     3     8    2      4

我尝试逐列实现此目的,然后将它们汇总以形成最终数据框:

df2_high = df['High'].groupby(df.index // 2).max()
df2_low = df['Low'].groupby(df.index // 2).min()

...但是我很难理解如何确定df2​​_open和df2_low,它们分别是第一行的打开值和第二行的关闭值?

希望有一种优雅的方法吗?

1 个答案:

答案 0 :(得分:1)

使用groupby + agg

s = df.groupby(df.index//2).agg({'Open':'first','High':'max','Low':'min','Close':'last'})
   Open  High  Low  Close
0     1    10    0      4
1     3     8    2      7