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

如何统计DataFrame列中嵌套列表的元素数量?

统计DataFrame每行兴趣列表的元素个数

原始数据

ID兴趣
2131['music','art','travel']
3213[]
3132['martial arts']
3232['martial arts']

期望输出

ID兴趣
21313
32130
31321
32321

问题分析

你之前用np.ravel和Counter的逻辑是统计整列中各列表的出现次数,并非每行列表内的元素数量,所以达不到预期效果。另外需要注意:你的兴趣列内容是字符串格式的列表,不是真正的Python列表对象,必须先完成格式转换才能统计长度。

解决方案

方法1:用ast.literal_eval转换后统计长度(推荐)

这是最稳妥的方式,能处理规范的字符串格式列表:

import pandas as pd
import ast

# 模拟你的原始DataFrame
data = {
    'ID': [2131, 3213, 3132, 3232],
    '兴趣': ["['music','art','travel']", "[]", "['martial arts']", "['martial arts']"]
}
df = pd.DataFrame(data)

# 将字符串转成真实列表后,直接计算长度
df['兴趣'] = df['兴趣'].apply(lambda x: len(ast.literal_eval(x)))

print(df)

方法2:纯字符串操作统计(仅限格式完全规范的场景)

如果不想引入ast模块,可通过字符串切割处理,前提是列表字符串没有嵌套结构、元素不含逗号:

df['兴趣'] = df['兴趣'].apply(
    lambda x: len([item.strip().strip("'") for item in x.strip('[]').split(',') if item.strip()])
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 01:45:34