Pandas根据另一列条件筛选仅在指定日期出现的名称
Pandas实现指定季度专属名称筛选
实现思路
核心逻辑拆为两步:
- 先标记所有在非目标季度(本次为Q2 2022)记录中出现过的名称,加入待排除集合
- 再从目标季度的记录里筛掉待排除集合内的名称,剩余结果就符合要求
完整实现代码
import pandas as pd # 构造示例数据集 df = pd.DataFrame({ 'Name': ['Name1', 'Name1', 'Name2', 'Name3'], 'Date': ['Q3 2022', 'Q2 2022', 'Q2 2022', 'Q2 2022'] }) # 定义要筛选的目标季度 target_quarter = 'Q2 2022' # 提取所有在非目标季度出现过的名称作为排除列表 exclude_names = df.loc[df['Date'] != target_quarter, 'Name'].unique() # 提取符合要求的名称列表 result_names = df.loc[(df['Date'] == target_quarter) & (~df['Name'].isin(exclude_names)), 'Name'].unique() print(result_names) # 输出:['Name2' 'Name3'],和预期结果一致 # 如果需要获取符合条件的完整行记录,直接去掉末尾的.unique()即可 result_rows = df.loc[(df['Date'] == target_quarter) & (~df['Name'].isin(exclude_names))]
补充说明
该写法不需要做分组、聚合操作,执行效率高,适配百万级以上的数据集处理场景。后续如果需要切换筛选的目标季度,仅需要修改target_quarter的取值就可以直接复用逻辑。
内容的提问来源于stack exchange,提问作者NaifChannels
相关产品推荐
相关产品推荐

