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

Pandas基于两列过滤行问题:代码返回空DataFrame求解

问题原因及解决办法

你的代码返回空DataFrame,主要是两个可能的原因:

1. 逻辑判断与实际需求不匹配(或数据无符合原逻辑的行)

你需要的是「巴基斯坦+拉合尔」或者「叙利亚+罗马」的行,但编写的代码逻辑是:(国家为巴基斯坦/叙利亚)并且(城市为拉合尔/罗马)。这个逻辑会覆盖四种组合:巴基斯坦+拉合尔、巴基斯坦+罗马、叙利亚+拉合尔、叙利亚+罗马。如果你的数据里只有巴基斯坦+拉合尔,理论上这个逻辑应该能筛到,但如果没筛到,更可能是第二个原因。

2. 数据字符串存在大小写/空格/拼写问题

比如:

  • country列实际值是pakistan全小写,而非Pakistan
  • city列是lahore小写,或者Lahore 末尾带空格
  • 存在拼写错误,比如Pakistan写成Pakistann

这种精确匹配的条件会直接返回False,自然无法筛选到任何行。


先排查数据问题

运行以下代码,查看country和city列的实际唯一值,确认是否有格式或拼写问题:

print("国家列表:", temperatures["country"].unique())
print("城市列表:", temperatures["city"].unique())

修正逻辑(如果是逻辑写错)

如果你的需求确实是「巴基斯坦+拉合尔」或「叙利亚+罗马」,应将逻辑调整为:

temperatures[((temperatures["country"] == "Pakistan") & (temperatures["city"] == "Lahore")) |
             ((temperatures["country"] == "Syria") & (temperatures["city"] == "Rome"))]

处理字符串匹配问题(如果是格式问题)

可以去除空格并统一大小写后再匹配:

temperatures[((temperatures["country"].str.strip().str.lower() == "pakistan") & 
              (temperatures["city"].str.strip().str.lower() == "lahore")) |
             ((temperatures["country"].str.strip().str.lower() == "syria") & 
              (temperatures["city"].str.strip().str.lower() == "rome"))]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:50:23