我了解 Pandas resampling使用 DateTimeIndex 的函数。
但是我如何轻松地沿着整数索引重新采样/分组?
以下代码说明了问题并有效:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randint(5, size=(10, 2)), columns=list('AB'))
print(df)
A B
0 3 2
1 1 1
2 0 1
3 2 3
4 2 0
5 4 0
6 3 1
7 3 4
8 0 2
9 4 4
# sum of n consecutive elements
n = 3
tuples = [(i, i+n-1) for i in range(0, len(df.index), n)]
df_new = pd.concat([df.loc[i[0]:i[1]].sum() for i in tuples], 1).T
print(df_new)
A B
0 4 4
1 8 3
2 6 7
3 4 4
但是有没有更优雅的方法来实现这一点?
代码对我来说似乎有点粗暴..
提前致谢!
最佳答案
您可以向下划分索引并聚合某些函数:
df1 = df.groupby(df.index // n).sum()
如果索引不是默认值(整数,唯一),则按 DataFrame
的 len
创建的按楼层划分 numpy.arange
进行聚合:
df1 = df.groupby(np.arange(len(df)) // n).sum()
关于python - Pandas 数据帧 : resampling along integer index/grouping by groups of n elements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47197007/