我有一个看起来像这样的数据框:
CCode CId State Age
326112 1217012 Nebraska 20
326112 1217012 Nebraska 75
326112 1217012 Nebraska 107
320113 1317012 Alabama 37
320113 1317012 Alabama 38
320113 1317012 Alabama 39
320180 8017061 Arkansas 37
320180 8017061 Arkansas 38
320180 8017061 Arkansas 39
326112 1217011 California 36
326112 1217011 California 37
326112 1217011 California 38
我正在尝试保留至少一个年龄低于 24 岁的群组,并对过滤后的群组进行重新分组。
我尝试按 4 列分组并使用链式 lambda 进行过滤:
df.groupby(['State', 'CId', 'CCode', 'Age']).filter(lambda x:x['Age'].sum()<23).groupby(['State', 'CId', 'CCode', 'Age']).std()
这会失去该组的其余成员:
CCode CId State Age
326112 1217012 Nebraska 20
需要的输出:
CCode CId State Age
326112 1217012 Nebraska 20
326112 1217012 Nebraska 75
326112 1217012 Nebraska 107
最佳答案
基于clarification from the comments :
what I would like to do is keep the groups that have an age starting below 24
df.groupby(['State', 'CId', 'CCode']).filter(lambda g: g.Age.lt(24).any())
# CCode CId State Age
# 0 326112 1217012 Nebraska 20
# 1 326112 1217012 Nebraska 75
# 2 326112 1217012 Nebraska 107
关于python - 如何使用 pandas groupby.filter 保留至少一个值小于 24 的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70239629/