如何从原DataFrame中提取满足groupby筛选条件的整行数据
实现代码
你可以直接从原DataFrame中提取m1中值为True的索引对应的行,写法和你现有的删除逻辑高度对应:
target_df = df.loc[m1[m1].index]
如果想要更直观的布尔索引写法,也可以先把m1的索引对齐到原DataFrame的全量行:
# 把m1的索引扩展到和原df一致,非分组最后一行的位置默认填充False mask = m1.reindex(df.index, fill_value=False) target_df = df[mask]
逻辑说明
- 你生成的
m1本身是只包含每个id分组最后一行的布尔序列,值为True的项就对应你要提取的目标行,索引和原DataFrame的对应行完全匹配 - 第一种写法直接复用你原有逻辑里的
m1[m1].index取目标行索引,不需要额外处理,和你之前的删除逻辑完全对应,便于维护 - 第二种写法对齐索引后得到全量布尔掩码,可读性更高,后续如果需要叠加其他过滤条件也更方便
内容的提问来源于stack exchange,提问作者Ze0ruso
相关产品推荐
相关产品推荐

