首页 > 解决方案 > 按 n 连续行聚合 pandas 数据帧

问题描述

我有一个 OHLC 类型的 pandas 数据框(打开、高、低、关闭),我试图重新采样它,不使用日期,而是简单地聚合 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,它们分别是第一行的 Open 值和第二行的 Close?

希望有一种优雅的方式来做到这一点?

标签: pythonpandasdataframeaggregatepandas-groupby

解决方案


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

推荐阅读