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

Pandas筛选A列为NaN且B列<100的行报错解决方法

报错原因

你的代码里df[df['A'].isna()]返回的是A列为空的子DataFrame,不是逐行的布尔判断结果,和返回布尔序列的df['B'] < 100做按位与运算时类型、维度都不匹配,就会触发这个类型报错。传给df.loc做行筛选的参数,必须是和原DataFrame行数完全一致的布尔序列,不能传截取后的子表。

正确实现代码
# 构造逐行匹配的布尔筛选掩码
filter_mask = df['A'].isna() & (df['B'] < 100)
# 筛选符合条件的行,加copy避免链式赋值警告
dff = df.loc[filter_mask].copy()
# 新增注释列
dff['Comments'] = 'Damaged item'

运行后得到的dff和你预期的输出完全一致:

Date     A    B       Comments
1 2022-05-01 08:01:00   NaN   54      Damaged item
编写筛选条件的注意事项
  • 多条件组合时,每个单独的判断逻辑直接基于列做布尔运算即可,不要在条件里嵌套df[筛选条件]的子表截取写法
  • 涉及&(与)、|(或)的多条件组合,每个独立判断建议用括号包裹,避免运算符优先级导致逻辑错误
  • 筛选后如果要对结果新增/修改列,建议调用.copy()生成独立的新DataFrame,避免触发pandas的链式赋值警告

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:54:24