首页 > 解决方案 > Pandas groupby 键然后根据组和返回键进行过滤

问题描述

熊猫做以下的方式是什么?

data.groupby('id').duration.max().index[data.groupby('id').duration.max() > 365]

我不想按 id 分组,然后使用组过滤并返回条件为真的 id。

使用 group.filter 函数返回原始数据帧。

标签: pythonpandasdataframe

解决方案


您可以重写您的代码 - 它是从聚合函数调用boolean indexing的,并且:Seriesmaxindex

s = data.groupby('id').duration.max()
idx = s.index[s > 365]
#alternative
#idx = s[s > 365].index

您还可以检查过滤后的值Series

print(s[s > 365])

但是,如果要按每个组DataFrame的值过滤原始值,则添加与原始值相同的返回值:maxGroupBy.transformSeriesDataFrame

data[data.groupby('id').duration.transform('max') > 365]

推荐阅读