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

如何统计Pandas字符串列表Series并将计数追加至DataFrame每行

解决方法

针对你需要把列表列中各字符串的出现次数转为对应列的需求,这里有两种高效的实现方式,避免循环导致的性能问题:

方法1:用explode + 交叉表(适合大数据量)

利用pandas的内置展开和交叉统计功能,效率远高于手动循环:

import pandas as pd

# 基于原DataFrame的'info'列处理
# 1. 把每行的列表拆成单行,保留原行索引
exploded_data = df['info'].explode()
# 2. 统计每行每个字符串的出现次数
count_table = pd.crosstab(exploded_data.index, exploded_data)
# 3. 合并回原DataFrame,空值填0并转成整数
final_df = df.join(count_table).fillna(0).astype(int)

方法2:结合Counter与Series(贴近你的原思路)

直接对每行应用Counter,转成Series后自动匹配所有唯一列,不用手动生成空表:

import pandas as pd
from collections import Counter

# 对每行的列表统计次数,转成Series(缺失的列自动为NaN)
count_series = df['info'].apply(lambda lst: pd.Series(Counter(lst)))
# 合并到原表,空值填0转整数
final_df = df.join(count_series.fillna(0).astype(int))

关于你之前的问题

用df.at()逐个赋值的方式,在数据量稍大时会因为循环次数过多,占用大量内存和CPU,导致Notebook崩溃。上面两种方法都是pandas的向量化操作,内部做了性能优化,不会出现这类问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:40:54