通八洲科技

Python中使用pandas的isin与多条件组合进行数据筛选的正确方法

日期:2025-12-29 00:00 / 作者:聖光之護

本文详解如何在pandas中正确结合isin()与其它条件(如年份匹配)进行数据过滤,重点解决因数据类型不匹配(如字符串'2025'误用于整型year列)导致返回空结果的常见问题。

在使用pandas进行数据筛选时,df.loc[...] 是常用方式,但更简洁、高效的做法是直接使用布尔索引。你遇到的“返回空DataFrame”问题,绝大多数情况下源于数据类型不一致——尤其是 Year 列实际存储为整数(int64),而代码中却用字符串 '2025' 进行比较,导致逻辑判断恒为 False。

✅ 正确做法是:先确认列的数据类型,再匹配对应类型:

# 查看Year列的数据类型
print(df['Year'].dtype)  # 常见输出:int64 或 object

⚠️ 注意事项:

? 小技巧:可链式组合多个条件,例如同时限定季度和状态:

df[
    df['Item Code'].isin(['04901', '04940']) &
    df['Year'].eq(2025) &
    df['Quarter'].isin([1, 2]) &
    df['Status'].eq('Active')
]

总结:类型一致是布尔索引生效的前提。始终用 df.dtypes 检查关键列类型,并据此选择匹配值的类型(2025 vs '2025'),即可避免“看似正确却返回空”的陷阱。