我有以下数据帧df
:
topic num
0 a01 1
1 a01 1
2 a01 2
3 a02 1
4 a02 3
5 a02 2
6 a02 3
7 a03 2
8 a03 1
我需要创建一个新的数据帧newdf
,其中每行对应于主题和每个主题的最大数量,如以下所示:
topic num
0 a01 2
1 a02 3
2 a03 2
我已经尝试使用max()函数从熊猫,但无济于事。我似乎不明白的是,我要如何遍历每一行,找到与主题对应的最大值。我如何把a01和a02分开,这样我就可以得到各自的最大值?我也试过换位,但同样的疑问总是出现。
可以使用GroupBy.max
和numeric_only=True
:
newdf= df.groupby("topic", as_index=False).max(numeric_only=True)
输出:print(newdf)
topic num
0 a01 2
1 a02 3
2 a03 2
参见使用groupby
获取组中值最大的行。的例子:
new_df = df.groupby(['topic'], sort=False)['num'].max()