python – 具有相同列和索引的多个数据帧的平均值
发布时间:2020-12-20 11:53:38 所属栏目:Python 来源:网络整理
导读:我有几个数据帧.它们中的每一个都具有相同的列和相同的索引.对于每个索引,我想平均每列中的值(如果这些是矩阵,我只是将它们相加并除以矩阵的数量). 这是一个例子. v1 = pd.DataFrame([['ind1',1,2,3],['ind2',4,5,6]],columns=['id','c1','c2','c3']).set_in
我有几个数据帧.它们中的每一个都具有相同的列和相同的索引.对于每个索引,我想平均每列中的值(如果这些是矩阵,我只是将它们相加并除以矩阵的数量).
这是一个例子. 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 c3 id ind1 1.333333 2.333333 2.666667 ind2 3.666667 2.333333 3.666667 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |