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

Pandas Merge后筛选date_y为空值失败的技术问题

解决左连接后筛选date_y为空行的问题

我来帮你搞定这个筛选问题,之前的方法没生效大概率是因为你看到的“空白”不是你以为的空字符串,或者列名有小细节没注意到,咱们一步步来排查解决:

第一步:先确认列名和date_y的实际值类型

首先先确保你要筛选的列名确实是date_y——有时候合并后重名列会自动加后缀,先打印列名确认:

print(test2.columns)

然后查看date_y列的所有唯一值,搞清楚到底是NaN(左连接未匹配时的默认空值)、空字符串'',还是带空格的空白内容:

print(test2['date_y'].unique())

第二步:根据实际情况选择筛选方式

情况1:date_y是NaN(最常见的左连接未匹配场景)

如果unique()结果里出现了nan,那用isna()方法筛选才有效:

# 筛选date_y为NaN的行
filtered_test2 = test2[test2['date_y'].isna()]

# 或者用query写法
filtered_test2 = test2.query('date_y.isna()')

情况2:date_y是空字符串或带空格的空白

如果unique()里有空字符串''或者类似' '的空白内容,先去掉首尾空格再筛选:

# 处理空白后筛选空字符串
filtered_test2 = test2[test2['date_y'].str.strip() == '']

情况3:两种空值都存在(NaN+空白/空字符串)

把两种情况合并起来,一网打尽所有空值行:

# 同时筛选NaN和空白/空字符串的行
filtered_test2 = test2[test2['date_y'].isna() | (test2['date_y'].str.strip() == '')]

为什么之前的方法没生效?

  • 左连接未匹配上的行,pandas默认会填充NaN而不是空字符串,这时候用== ''是匹配不到的,因为NaN和任何值比较结果都是False
  • 如果是带空格的空白字符串,直接用== ''也匹配不上,必须先通过str.strip()去掉首尾空格才能准确匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:02:55