gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:50:30 25 4
gpt4 key购买 nike

我有几个数据框。它们每个都有相同的列和相同的索引。对于每个索引,我想对每一列中的值进行平均(如果这些是矩阵,我会将它们相加并除以矩阵的数量)。

这是例子。

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 和等等)。

目前我用循环来做这个:

dfs = [v1, v2, v3]
cols= ['c1', 'c2', 'c3']

data = []
for ind, _ in dfs[0].iterrows():
vals = [sum(df.loc[ind][col] for df in dfs) / float(len(dfs)) for col in cols]
data.append([ind] + vals)

pd.DataFrame(data, columns=['id'] + cols).set_index('id')

,但这对于包含很多列的大数据帧来说显然效率低下。那么我怎样才能在没有循环的情况下实现这一点呢?

最佳答案

您可以使用 groupby.mean在连接数据帧后的 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

关于python - 具有相同列和索引的多个数据帧的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38940946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com