我想为df的每n行计算最小值/最大值,比如说10,但是使用df.rolling(10).max()给出0-9、1-10、2-11行等的值。我想要0-9、10-19、20-29等
对于大型数据集,有没有一种很好的方法?
谢谢
成功的关键是按np.arange(len(df.index))// 10]分组>10(组大小)为您需要的其他任何值)。
假设您有3列来计算最小/最大(['A','B','C']
),您可以运行:df.groupby(np.arange(len(df.index)) // 10)[['A', 'B', 'C']].agg(['min', 'max'])
用途:
受this answer的启发,我建议尝试以下代码:
N = 10 # set to the group size
s.groupby(s.index // N).max()
s.groupby(s.index // N).min()