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

同一Pandas DataFrame实现多条件组合过滤的最佳方法

Pandas多条件筛选合并方案
  • 逻辑简化说明
    你要筛选的两类行可以直接做逻辑合并,两类行的特征分别是:
    1. Areacode匹配、t字段不匹配
    2. Areacode不匹配、t字段不匹配
      可以看到两类行的共性是t字段一定不匹配,如果你的需求确实是排除所有t字段匹配的行(包括t匹配但Areacode不匹配的行),可以直接用最简写法:
filtered_df = merged_df.loc[merged_df['t_1'] != merged_df['t_2']]
  • 如果你实际需求是仅剔除「t和Areacode都完全匹配」的行,其余所有行都保留(包含t匹配但Areacode不匹配的行),可以用反向筛选写法:
# ~ 代表逻辑取反,直接排除两个字段都匹配的行
filtered_df = merged_df.loc[~((merged_df['t_1'] == merged_df['t_2']) & (merged_df['Areacode_1'] == merged_df['Areacode_2']))]
  • 如果你就是要把原有两个条件直接拼接,也可以用逻辑或|连接,写法如下(和第一种最简写法逻辑完全等价):
filtered_df = merged_df.loc[
    ((merged_df['t_1'] != merged_df['t_2']) & (merged_df['Areacode_1'] == merged_df['Areacode_2'])) |
    ((merged_df['t_1'] != merged_df['t_2']) & (merged_df['Areacode_1'] != merged_df['Areacode_2']))
]

以上三种写法在你提供的样例数据上运行,都会得到你预期的输出结果,自动剔除George对应的全匹配行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:36:00