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

如何统计含NaN值的pandas列中列表的长度?

解决方案:计算DataFrame中列表列的长度(NaN/空列表返回0)

这里提供几种实用方法,可根据数据规模灵活选择:

方法1:简单直观的apply+lambda(小数据集适用)

直接遍历每行,判断是否为NaN,是则返回0,否则计算列表长度:

import pandas as pd
import numpy as np

# 构造示例DataFrame
df = pd.DataFrame({
    'My_column': [[1,2], [], np.nan, [3,4,5], np.nan]
})

df['list_length'] = df['My_column'].apply(lambda x: len(x) if pd.notna(x) else 0)

方法2:高效向量化方法(大数据集推荐)

利用pandas的str.len()方法自动识别列表长度,遇到NaN返回NaN后用fillna(0)替换,效率远高于apply:

df['list_length'] = df['My_column'].str.len().fillna(0).astype(int)

注:str.len()不仅能处理字符串,对列表、元组等可迭代对象也能正确返回长度,非常便捷。

方法3:处理混杂数据类型(若列中存在非列表/NaN的其他类型)

如果列里除了列表和NaN,还有其他数据类型,可通过类型判断确保只计算列表长度,其余情况返回0:

df['list_length'] = df['My_column'].apply(lambda x: len(x) if isinstance(x, list) else 0)

验证结果

运行上述代码后,示例DataFrame的list_length列结果为:[2, 0, 0, 3, 0],完全符合需求。

内容的提问来源于stack exchange,提问作者Droid-Bird

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:01:09