Python 使用分区列方式汇总数据帧

Python 使用分区列方式汇总数据帧,python,dictionary,pandas,dataframe,simplify,Python,Dictionary,Pandas,Dataframe,Simplify,我想取一个一百万行长的数据帧,并对其进行汇总,这样我就可以取20行中每个块的列平均值。有没有一个简单的方法可以做到这一点 data = np.array([]) result2 = np.split(result,96158) for each in range(len(result2)): data = np.append(data, np.array(result2[each].mean())) 这是可行的,但我并不喜欢它,假设长度是96158*20

我想取一个一百万行长的数据帧,并对其进行汇总,这样我就可以取20行中每个块的列平均值。有没有一个简单的方法可以做到这一点

    data = np.array([])
    result2 = np.split(result,96158)
    for each in range(len(result2)):
        data = np.append(data, np.array(result2[each].mean()))

这是可行的,但我并不喜欢它,假设长度是96158*20,这里有另一种方法,根据整数除法使用
groupby
,然后使用
.agg('mean')


np.split可以用来把它分成更小的部分,然后我可以取这些部分的平均值,但这似乎不是最好的方法。也许可以让我们看看你的尝试。Pandas有很多滚动聚合、重采样和分组操作。请注意,如果索引尚未成为标准,您可以将
np.arange(len(df))//20传递给groupby。
df = pd.DataFrame(np.random.randn(50,2), columns=list('AB'))
df

         A       B
0  -0.6679 -0.3786
1   0.4253  1.0187
2   0.6159 -1.2768
3  -1.0202 -0.1413
4   0.2444  0.4939
5  -0.2606  0.1346
6  -1.2305  0.6479
7   0.2113 -1.0190
..     ...     ...
42 -0.0498 -1.3164
43  0.6948  0.5469
44  0.2718  0.2487
45 -2.9541 -0.9083
46 -0.5636 -0.4476
47 -0.1167  1.1087
48 -0.3220 -3.1022
49 -0.6414 -0.2629

[50 rows x 2 columns]

# the integer division
df.index//20

Int64Index([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
            2, 2, 2, 2, 2, 2],
           dtype='int64')


df.groupby(df.index//20).agg('mean')

        A       B
0 -0.9882 -0.0433
1 -2.4081  1.5017
2 -4.2048 -3.3826