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

Pandas DataFrame如何统计列单元格内逗号分隔值的出现次数

pandas逐行统计逗号分隔值频次并格式化输出方案

问题背景

现有如下数据集,需要实现Output列的计算逻辑:统计col2列每个单元格内逗号分隔的各取值出现次数,按「值(计数)」的格式拼接得到结果,示例数据如下:

col1col2Output
2ATCH_DRop,TCH_DRop,HSRTCH_DRop(2),HSR(1)
2BHSRHSR(1)
2cSD_DRop,HSRSD_DRop(1),HSR(1)
1AHSR,SD_Cong,HSR,SD_CongHSR(2),SD_Cong(2)

执行代码NOK['col2'].str.split(',').value_counts()时触发报错。

报错原因

str.split(',')返回的Series中每个元素是Python列表类型:

  • 列表属于不可哈希类型,无法被value_counts()做去重统计
  • value_counts()的作用是统计整个Series中整行元素的出现次数,本身也不支持统计每行列表内部的元素频次,和需求逻辑不匹配。

实现代码

无需额外循环,借助collections的Counter做行内计数即可,代码如下:

from collections import Counter

# 逐行处理生成Output列
NOK['Output'] = NOK['col2'].apply(
    lambda cell_text: ','.join([f'{val}({count})' for val, count in Counter(cell_text.split(',')).items()])
)

逻辑说明

  • 逐行遍历col2的单元格内容,用split(',')把逗号分隔的字符串拆分为取值列表
  • 调用Counter直接统计当前行列表内各取值的出现次数,计数效率高于手写字典遍历
  • 把计数结果按值(计数)的格式做字符串格式化,最后用逗号拼接为完整字符串赋值给Output列

执行后得到的结果和示例预期完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 03:48:44