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

Python统计DataFrame列值中集合元素的出现次数问题

解决方法

你的代码失败有两个核心原因:

  • 直接遍历字符串x会逐个访问字符,而非按逗号分割后的目标子串
  • 变量名用了Python内置类型名list,虽语法允许但易混淆,建议替换为更清晰的命名

步骤1:修正目标集合命名

target_set = {'AGB', 'YTE', 'ENN', 'TAP', 'XAL', 'MUI'}

步骤2:计算ColE(总出现次数)

将ColA的字符串按逗号分割为列表,统计列表中属于目标集合的元素总数:

df['ColE'] = df['ColA'].apply(lambda x: sum(1 for item in x.split(',') if item in target_set))

步骤3:计算ColD(唯一次数)

分割后转成集合自动去重,再计算与目标集合的交集大小:

df['ColD'] = df['ColA'].apply(lambda x: len(set(x.split(',')).intersection(target_set)))

完整代码示例

import pandas as pd

# 初始化数据
data = {
    'ColA': ['ENN,JAX,ATL,ERT,CMH,RSW,TAP,ABQ,ENN', 'TUY,XAL,MUI,AUS,OPP,YTE,ERT'],
    'ColB': [45, 32],
    'ColC': ['Three', 'Three']
}
df = pd.DataFrame(data)

# 目标集合
target_set = {'AGB', 'YTE', 'ENN', 'TAP', 'XAL', 'MUI'}

# 计算目标列
df['ColD'] = df['ColA'].apply(lambda x: len(set(x.split(',')).intersection(target_set)))
df['ColE'] = df['ColA'].apply(lambda x: sum(1 for item in x.split(',') if item in target_set))

# 输出预期结果
print(df[['ColA', 'ColD', 'ColE']])

运行结果

ColAColDColE
ENN,JAX,ATL,ERT,CMH,RSW,TAP,ABQ,ENN23
TUY,XAL,MUI,AUS,OPP,YTE,ERT33

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 10:20:43