You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于两列值筛选保留Python DataFrame的目标行

pandas 分组筛选解决方案

核心思路

按Column A和Column C的组合分组,判断每个分组中是否存在Column B = 124的行,保留所有符合该条件的分组的全部行。

代码实现

1. 构造示例数据

import pandas as pd
import numpy as np

# 构造目标DataFrame
df = pd.DataFrame({
    'Column A': [7,7,7,8,8,8,9,9,9,7,7,7],
    'Column B': [124, np.nan, np.nan, np.nan, np.nan, np.nan, 124, np.nan, np.nan, 124, np.nan, np.nan],
    'Column C': [1,1,1,1,1,1,1,1,1,2,2,2]
})

2. 分组筛选

使用transform方法直接生成每行对应的分组判断结果,一步完成筛选:

# 生成布尔掩码:标记每行所在分组是否包含Column B=124的行
mask = df.groupby(['Column A', 'Column C'])['Column B'].transform(lambda x: (x == 124).any())

# 筛选出符合条件的所有行
result_df = df[mask]

# 输出结果
print(result_df)

输出结果

Column AColumn BColumn C
07124.01
17NaN1
27NaN1
69124.01
79NaN1
89NaN1
97124.02
107NaN2
117NaN2

代码解释

  • groupby(['Column A', 'Column C']):将数据按A和C的组合分组,确保同组行的A、C值完全一致
  • transform(lambda x: (x == 124).any()):对每个分组的B列进行判断,只要有一行等于124,整个组的所有行都会标记为True
  • df[mask]:通过布尔掩码筛选出所有标记为True的行,即保留包含124的分组的全部数据

内容的提问来源于stack exchange,提问作者jsang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 06:20:07