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

python – 具有相同列和索引的多个数据帧的平均值,第1张

概述我有几个数据帧.它们中的每一个都具有相同的列和相同的索引.对于每个索引,我想平均每列中的值(如果这些是矩阵,我只是将它们相加并除以矩阵的数量). 这是一个例子. v1 = pd.DataFrame([['ind1', 1, 2, 3], ['ind2', 4, 5, 6]], columns=['id', 'c1', 'c2', 'c3']).set_index('id')v2 = pd.Dat 我有几个数据帧.它们中的每一个都具有相同的列和相同的索引.对于每个索引,我想平均每列中的值(如果这些是矩阵,我只是将它们相加并除以矩阵的数量).

这是一个例子.

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

在实际情况中,索引和列可以按不同的顺序排列.

对于这种情况,结果将是

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

目前我用循环做这个:

dfs = [v1,v2,v3]cols= ['c1','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

pd.concat([v1,v3]).groupby(level=0).mean()            c1        c2        c3ID                                ind1  1.333333  2.333333  2.666667ind2  3.666667  2.333333  3.666667
总结

以上是内存溢出为你收集整理的python – 具有相同列和索引的多个数据帧的平均值全部内容,希望文章能够帮你解决python – 具有相同列和索引的多个数据帧的平均值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1193716.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存