根据列中的最大值创建新的数据框



我有以下数据帧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.maxnumeric_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()

最新更新