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

如何用Pandas查询DataFrame中agg_data列含Null且长度为2的行?

解决DataFrame筛选agg_data列的问题

需求回顾

筛选agg_data列满足以下两个条件的行:

  • 列中列表的长度等于2
  • 列表内包含None或空字符串''

原有写法的问题分析

  1. 第一个lambda条件:逻辑本身正确,但未通过apply方法作用于agg_data的每个列表元素,无法实现逐行判断。
  2. 第二个条件:完全逻辑错误:
    • result['agg_data'].isnull().any()是检查整个列是否存在元素本身为NaN的情况,而非列表内部的null
    • len(result['agg_data'] == 2)计算的是布尔系列的总长度,不是每个列表的长度

正确实现方法

方法一:使用apply结合自定义函数

def check_list(lst):
    # 判断列表长度为2,且包含空值/None
    return len(lst) == 2 and any(val is None or val == '' for val in lst)

# 筛选符合条件的行
filtered_df = result[result['agg_data'].apply(check_list)]

方法二:向量化操作(大数据量推荐)

# 条件1:列表长度等于2
cond_length = result['agg_data'].str.len() == 2
# 条件2:列表包含空值/None
cond_has_null = result['agg_data'].apply(lambda x: any(val is None or val == '' for val in x))

# 合并条件筛选
filtered_df = result[cond_length & cond_has_null]

补充说明

如果你的null是numpy的np.nan(而非Python原生None),需要调整判断逻辑,加入pd.isna()检测:

def check_list(lst):
    return len(lst) == 2 and any(val is None or pd.isna(val) or val == '' for val in lst)

内容的提问来源于stack exchange,提问作者Md Parvez Alam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 16:07:31