具有相同列和索引的多个数据帧的平均值

2024-04-23 14:18:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些数据帧。它们都有相同的列和相同的索引。对于每个索引,我想平均每列中的值(如果这些是矩阵,我只需将它们相加并除以矩阵的数目)。在

这是一个例子。在

v1 = pd.DataFrame([['ind1', 1, 2, 3], ['ind2', 4, 5, 6]], columns=['id', 'c1', 'c2', 'c3']).set_index('id')
v2 = pd.DataFrame([['ind1', 2, 3, 4], ['ind2', 6, 1, 2]], columns=['id', 'c1', 'c2', 'c3']).set_index('id')
v3 = pd.DataFrame([['ind1', 1, 2, 1], ['ind2', 1, 1, 3]], columns=['id', 'c1', 'c2', 'c3']).set_index('id')

在实际情况下,索引和列的顺序可能不同。在

对于这种情况,结果是

enter image description here

(ind1,c1的值是(1 + 1 + 2) / 3,对于ind2,c2是(1 + 5 + 1) / 3,依此类推)。在

目前,我使用循环:

^{pr2}$

,但对于具有大量列的大数据帧,这显然是低效的。那么,如果没有循环,我怎么能做到这一点呢?在


Tags: columns数据iddataframeindex情况矩阵pd
1条回答
网友
1楼 · 发布于 2024-04-23 14:18:23

在连接数据帧之后,可以在index级别上使用^{}

pd.concat([v1, v2, v3]).groupby(level=0).mean()

            c1        c2        c3
id                                
ind1  1.333333  2.333333  2.666667
ind2  3.666667  2.333333  3.666667

相关问题 更多 >