You need to enable JavaScript to run this app. 如何基于两列数据生成指定格式的哑变量DataFrame?
优惠活动
大模型
产品
解决方案
定价
更多

如何基于两列数据生成指定格式的哑变量DataFrame?

解决方案

首先假设你的原始DataFrame包含两列,分别命名为id(存储a/b/c分类)和stage(存储stg1/stg2/stg3分类),以下三种都是pandas原生向量化实现方案,效率远高于自定义循环:

方案1:crosstab(最简洁)

直接调用交叉表函数,默认统计频次,刚好符合0/1哑变量需求:

import pandas as pd

# 构造测试数据的示例,你可以替换为自己的读入逻辑
df = pd.DataFrame([
    ["a", "stg1"], ["a", "stg2"], ["a", "stg3"],
    ["b", "stg2"], ["b", "stg3"],
    ["c", "stg1"]
], columns=["id", "stage"])

# 核心转换代码
result = pd.crosstab(df["id"], df["stage"])

方案2:pivot_table(你提到的透视表思路)

用size作为聚合函数,缺失值填充为0即可:

result = df.pivot_table(
    index="id", 
    columns="stage", 
    aggfunc="size", 
    fill_value=0
)

方案3:get_dummies(修正用法)

get_dummies本身只能生成单列的哑变量,需要搭配分组求和才能得到你要的格式:

result = pd.get_dummies(df, columns=["stage"]).groupby("id").sum()

如果需要和你给出的示例格式完全对齐,去掉索引和列的名称,可以追加一行:

result = result.rename_axis(index=None, columns=None)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 04:57:04