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

如何将DataFrame中存储列表的列转为统计各值出现次数的单独列

有比嵌套遍历更优的实现,用pandas原生向量化操作即可,代码更简洁,执行效率也更高,尤其适合数据量较大的场景。

方案1:explode + pivot_table(兼容性最强)

import pandas as pd

presence_data = pd.DataFrame({
    "id": ["id1", "id2"],
    "presence": [
        ["A", "B", "C", "A"],
        ["G", "A", "B", "I", "B"],
    ]
})

result = (
    # 将presence列的列表拆分为一行一个元素
    presence_data.explode('presence')
    # 按id分组,统计每个元素的出现次数,缺失值填充为0
    .pivot_table(index='id', columns='presence', aggfunc='size', fill_value=0)
    # 把id从索引转回普通列,同时清除列名的额外索引标识
    .reset_index()
    .rename_axis(columns=None)
)

方案2:str.get_dummies(代码更简短)

result = (
    presence_data.join(
        # 把列表用分隔符拼接为字符串后直接生成哑变量计数
        presence_data['presence'].str.join('|').str.get_dummies()
    )
    # 删除原始的presence列
    .drop('presence', axis=1)
)

如果你的列表元素包含|字符,换一个不会出现在元素里的分隔符即可,或者直接用方案1避免冲突。

两种方案输出的结果都和你需要的目标格式完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:54:05