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

如何将Pandas DataFrame列表列的取值转为列名并填充0/1标识

实现方法

这里提供两种常用的实现方案,都可以直接得到你需要的结果:

方案1:使用str.get_dummies(代码最简洁,运行效率高)

如果你的values列存储的列表元素不含|这类特殊分隔符,直接用核心代码就能完成转换:

import pandas as pd

# 示例数据构造,你可以替换成自己的df
df = pd.DataFrame({
    'id': [1,2,3,4],
    'values': [['a','b','c'], ['a','c'], ['b','c'], ['d']]
})

# 核心转换逻辑
result = pd.concat([df['id'], df['values'].str.join('|').str.get_dummies()], axis=1)

方案2:使用explode+crosstab(逻辑直观,无分隔符冲突问题)

如果列表元素可能包含特殊字符,担心分隔符冲突,可以用拆分再聚合的方式实现:

# 先将列表拆分为单行单个元素的结构
df_exploded = df.explode('values')
# 用交叉表统计每个id对应元素的出现次数,自动生成0/1矩阵
result = pd.crosstab(df_exploded['id'], df_exploded['values']).reset_index()
# 清除自动生成的列名索引,输出格式更符合要求
result.columns.name = None

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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:36:02