如何在Pandas中通过多列组合匹配筛选DataFrame对应行数据
Pandas 多列组合匹配提取指定行实现方法
你可以通过以下两种常用方案实现需求:
方案1:使用merge内连接(推荐,性能更高)
直接对两个DataFrame的三个匹配列做内连接,自动筛选完全匹配的行,最后重置索引即可:
# 内连接匹配三列组合,重置索引丢弃原有索引 result = pd.merge(df, combinations_i_want, on=["Category", "Name", "Year"], how="inner").reset_index(drop=True)
方案2:使用isin构造布尔索引
先把需要匹配的组合转为元组列表,再校验原DataFrame每行的对应列组合是否在列表中:
# 提取目标组合的元组列表 target_combs = list(combinations_i_want.itertuples(index=False, name=None)) # 构造匹配掩码 match_mask = df[["Category", "Name", "Year"]].apply(tuple, axis=1).isin(target_combs) # 筛选结果并重置索引 result = df[match_mask].reset_index(drop=True)
两种方案输出的结果均包含你需要的3条记录,且不保留原表索引。
内容的提问来源于stack exchange,提问作者rdk
相关产品推荐
相关产品推荐

