python - 如何使用 pandas groupby.filter 保留至少一个值小于 24 的组

标签 python pandas dataframe pandas-groupby

我有一个看起来像这样的数据框:

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

  1. 从石斑鱼中删除 Age
  2. 测试是否 any群组中的年龄lt (小于)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/

相关文章:

python - 在训练和测试数据中保持相同的虚拟变量

R - 将多列的 chr 值转换为 num?

python - Pyramid Postgresql 连接问题

python - 从嵌套的字典python中获取键值

python - 在Linux上自动安装conda

python - "Resample"根据其频率的时间戳

r - 分割特定日期之前和之后的数据

python - matplotlib:为什么绘制历史记录会在python中导致IndexError?

python - 具有线条和面积样式的 Matplotlib 图例

python - 我如何删除条件列值上的全天行..pandas