Pandas用isin+多条件过滤DataFrame返回空结果,求解决思路
排查与解决方法
出现空结果大概率是数据格式不匹配或者数据存在隐藏字符导致的,按以下步骤排查:
先检查列的数据类型
运行df.dtypes查看Item Code和Year的类型:- 如果
Item Code是数字类型(比如int64),你代码里用字符串'04901'匹配肯定找不到;同理如果Year是数字类型,用'2022'也匹配不上。 - 修正后的代码示例(假设两列都是数字类型):
df.loc[(df['Item Code'].isin([4901, 4940])) & (df['Year'] == 2022)]
- 如果
检查数据是否有空格/隐藏字符
很多时候数据里会带首尾空格,比如' 04901'或者'2022 ',肉眼看不到但匹配失败。可以先清洗数据再筛选:# 先转为字符串并去除首尾空格 df['Item Code'] = df['Item Code'].astype(str).str.strip() df['Year'] = df['Year'].astype(str).str.strip() # 再执行筛选 df.loc[(df['Item Code'].isin(['04901', '04940'])) & (df['Year'] == '2022')]确认数据中是否存在目标值
运行df['Item Code'].unique()和df['Year'].unique(),查看这两列的所有唯一值,确认04901、04940和2022确实存在于数据中。
内容的提问来源于stack exchange,提问作者Bobzy3721
相关产品推荐
相关产品推荐

