【发布时间】:2018-11-28 17:12:15
【问题描述】:
panda下面的做法是什么?
data.groupby('id').duration.max().index[data.groupby('id').duration.max() > 365]
我不想按 id 分组,然后使用组过滤并返回条件为真的 id。
使用 group.filter 函数返回原始数据帧。
【问题讨论】:
panda下面的做法是什么?
data.groupby('id').duration.max().index[data.groupby('id').duration.max() > 365]
我不想按 id 分组,然后使用组过滤并返回条件为真的 id。
使用 group.filter 函数返回原始数据帧。
【问题讨论】:
您可以重写您的代码 - 它被称为 boolean indexing 和 Series 来自聚合函数 max 和 index:
s = data.groupby('id').duration.max()
idx = s.index[s > 365]
#alternative
#idx = s[s > 365].index
您还可以检查Series的过滤值:
print(s[s > 365])
但是如果想过滤原始DataFrame max 每组值添加GroupBy.transform 以返回与原始Series 相同大小的DataFrame:
data[data.groupby('id').duration.transform('max') > 365]
【讨论】: