我有一个一直在尝试解决的问题:
我希望代码能够基于最频繁的数字对这个数据框的多个列进行分组,并对最后一列的值求和。例如:
df = pd.DataFrame({'A':[1000, 1000, 1000, 1000, 1000, 200, 200, 500, 500],
'B':[380, 380, 270, 270, 270, 45, 45, 45, 55],
'C':[380, 380, 270, 270, 270, 88, 88, 88, 88],
'D':[45, 32, 67, 89, 51, 90, 90, 90, 90]})
df
A B C D
0 1000 380 380 45
1 1000 380 380 32
2 1000 270 270 67
3 1000 270 270 89
4 1000 270 270 51
5 200 45 88 90
6 200 45 88 90
7 500 45 88 90
8 500 55 88 90
我希望代码能够展示以下结果:
A B C D
0 1000 380 380 284
1 1000 380 380 284
2 1000 270 270 284
3 1000 270 270 284
4 1000 270 270 284
5 200 45 88 360
6 200 45 88 360
7 500 45 88 360
8 500 55 88 360
注意到第一行中最常见的值为1000,因此我对“A”列进行分组,这样在“D”列中得到总和为284。然而,在最后一行中,最常见的数字是88,不在“A”列中,而在“C”列中。我尝试通过按“C”列分组来汇总“D”列的值,并获得360。我不确定自己是否表达清楚。
我尝试使用函数
df['D'] = df.groupby(['A', 'B', 'C'])['D'].transform('sum')
,但它没有显示上述所需的结果。有没有一种类似pandas样式的解决方法?先感谢您!
df['D'] = df.groupby(['A', 'B', 'C'])['D'].sum()
。 - Prayson W. Danieldf['D'] = df.groupby(['A', 'B', 'C'])['D'].transform('sum')
没有报错。 - Matheus Soares