Groupby:获取最大值并保持所有列相关

问题描述 投票:0回答:1

我有一个数据框如下:

对于每一列

objectid
,我试图保留列
pct
最大的行。

我做了如下的groupby:

df.groupby(['objectid'])['pct'].max().reset_index()

但是,问题是我丢失了其他列的信息,我需要这些信息来做其他事情。

这是输出的示例。输出仅保留两列

objectid
pct
。但是,我需要所有列。

    objectid    pct
0   10000Aga    100.0
1   10001Aga    100.0

如何进行分组并检索所有列的信息。

python-3.x pandas dataframe group-by
1个回答
0
投票

您可以按

pct
对值进行排序,然后保留每个
objectid
的最后一个。

如果您想使用

groupby
:

df = df.sort_values("pct").groupby("objectid").last().reset_index()

或者你可以使用

dropduplicates
,这样更快:

df = df.sort_values("pct").drop_duplicates(["objectid"], keep="last")
© www.soinside.com 2019 - 2024. All rights reserved.