如何“按组”将函数应用于数据框的每一列?即按一列的值分组,然后计算(例如)每组的平均值+其他列。预期的输出是带有索引的数据帧-不同组的名称,以及值-每个组的平均值+列
例如考虑:
df = pd.DataFrame(np.arange(16).reshape(4,4), columns=['A', 'B', 'C', 'D'])
df['group'] = ['a', 'a', 'b','b']
A B C D group
0 0 1 2 3 a
1 4 5 6 7 a
2 8 9 10 11 b
3 12 13 14 15 b
我想为每列计算例如np.mean,但要“按组”进行计算,在该特定示例中,可以通过以下方式完成:
t = df.groupby('group').agg({'A': np.mean, 'B': np.mean, 'C': np.mean, 'D': np.mean })
A B C D
group
a 2 3 4 5
b 10 11 12 13
但是,它要求显式使用列名“ A”:np.mean,“ B”:np.mean,“ C”:np.mean,“ D”:np.mean,这对我的任务是不可接受的,因为它们可以被改变。
正如MaxU
评论中最简单的是groupby
+ GroupBy.mean
:
df1 = df.groupby('group').mean()
print (df1)
A B C D
group
a 2 3 4 5
b 10 11 12 13
如果需要索引中的列:
df1 = df.groupby('group', as_index=False).mean()
print (df1)
group A B C D
0 a 2 3 4 5
1 b 10 11 12 13
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句