如何基于字典的键和值筛选pandas DataFrame的行?
Python根据字典筛选DataFrame实现方案
核心逻辑是匹配每行Customer_ID对应的字典值列表中是否包含当前行的Category字段,两种常用实现方式如下:
方法1:简洁易读的逐行校验(适合中小数据集)
import pandas as pd # 你的筛选规则字典 d = { 40275: ['Book','Software'], 39900: ['Book'], 35886: ['Software'], 40350: ['Software'], 28129: ['Software'] } # 逐行校验生成过滤掩码 filter_mask = df.apply(lambda row: row['Category'] in d.get(row['Customer_ID'], []), axis=1) # 取符合条件的行得到结果 result_df = df[filter_mask]
方法2:向量化匹配(适合百万级以上大数据集,性能更高)
# 把字典规则展开为 (Customer_ID, Category)的有效匹配对列表 valid_match_pairs = [(customer_id, category) for customer_id, category_list in d.items() for category in category_list] # 生成多列匹配掩码 filter_mask = df[['Customer_ID', 'Category']].apply(tuple, axis=1).isin(valid_match_pairs) result_df = df[filter_mask]
两种方法执行后得到的result_df就是你需要的目标结果。
内容的提问来源于stack exchange,提问作者V.Nouri
相关产品推荐
相关产品推荐

