
这是一个例子.
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 – 具有相同列和索引的多个数据帧的平均值所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)