我有一个数据框如下:
对于每一列
objectid
,我试图保留列pct
最大的行。
我做了如下的groupby:
df.groupby(['objectid'])['pct'].max().reset_index()
但是,问题是我丢失了其他列的信息,我需要这些信息来做其他事情。
这是输出的示例。输出仅保留两列
objectid
和pct
。但是,我需要所有列。
objectid pct
0 10000Aga 100.0
1 10001Aga 100.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")