python – 具有相同列和索引的多个数据帧的平均值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 具有相同列和索引的多个数据帧的平均值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1177字,纯文字阅读大概需要2分钟。
内容图文
![python – 具有相同列和索引的多个数据帧的平均值](/upload/InfoBanner/zyjiaocheng/746/57910893e104446da06cc8b80263b3e1.jpg)
我有几个数据帧.它们中的每一个都具有相同的列和相同的索引.对于每个索引,我想平均每列中的值(如果这些是矩阵,我只是将它们相加并除以矩阵的数量).
这是一个例子.
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')
在实际情况中,索引和列可以按不同的顺序排列.
对于这种情况,结果将是
(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:
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 – 具有相同列和索引的多个数据帧的平均值全部内容,希望文章能够帮你解决python – 具有相同列和索引的多个数据帧的平均值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。