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

Python Pandas中多条件过滤DataFrame问题求助

解决Pandas多条件过滤DataFrame的问题

原代码的核心错误

  1. 拼写错误:.srt.contains应为.str.contains(Pandas字符串处理的正确属性是str)
  2. 逻辑运算符误用:你的需求是三个条件同时满足,需用&(逻辑与)而非|(逻辑或);且每个条件必须用括号包裹,避免运算符优先级导致的计算错误
  3. 冗余写法:多次调用contains不如用更简洁高效的方式处理多值匹配

正确实现方式

方式1:模糊匹配(适用于城市/职位名称是子串的场景)

如果column2中的城市名包含"city1"/"city4"、column5中的职位名包含"job3"/"job9"时需要保留,用正则匹配简化contains调用:

df_srm_final = df_name_filtered_columns[
    (df_name_filtered_columns["column2"].str.contains("city1|city4")) &
    (df_name_filtered_columns["column5"].str.contains("job3|job9")) &
    (df_name_filtered_columns["column11"] > 0)
]

方式2:精确匹配(推荐,适用于城市/职位是完全匹配的场景)

如果需要column2严格等于"city1"或"city4"、column5严格等于"job3"或"job9",用isin()更高效易读:

df_srm_final = df_name_filtered_columns[
    (df_name_filtered_columns["column2"].isin(["city1", "city4"])) &
    (df_name_filtered_columns["column5"].isin(["job3", "job9"])) &
    (df_name_filtered_columns["column11"] > 0)
]

额外说明

  • 若column11存在非数值类型数据,可先转类型再过滤:df_name_filtered_columns["column11"] = pd.to_numeric(df_name_filtered_columns["column11"], errors="coerce"),确保过滤逻辑正常运行
  • 所有条件必须用括号包裹,因为Pandas中&的优先级高于比较运算符(>),不加括号会导致运算顺序混乱

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:01:08