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

如何用Python将Pandas DataFrame行转列并以0/1标记匹配

实现Pandas DataFrame的camps列独热编码转换

先看示例原数据集的创建代码和内容:

import pandas as pd

# 示例原数据集
data = {
    'id': [1, 1, 2, 3, 3, 3],
    'camps': ['camp_a', 'camp_b', 'camp_a', 'camp_b', 'camp_c', 'camp_a']
}
df = pd.DataFrame(data)

原DataFrame内容:

id   camps
0   1  camp_a
1   1  camp_b
2   2  camp_a
3   3  camp_b
4   3  camp_c
5   3  camp_a

下面提供两种实用的实现方法:

方法1:用pivot_table直接转换

通过分组计数的方式快速生成目标格式,自动填充0:

# 按id分组,统计每个camp的出现次数,填充0并转为整数
result = df.pivot_table(index='id', columns='camps', aggfunc='size', fill_value=0).astype(int)
# 可选:把id从索引转回普通列
result = result.reset_index()

转换后结果:

camps  id  camp_a  camp_b  camp_c
0      1       1       1       0
1      2       1       0       0
2      3       1       1       1

方法2:get_dummies + groupby求和

先对camps列做独热编码,再按id汇总求和:

# 对camps列生成独热编码列
dummies = pd.get_dummies(df['camps'])
# 合并id列后按id分组求和,转为整数
result = pd.concat([df['id'], dummies], axis=1).groupby('id').sum().astype(int).reset_index()

这个方法和方法1的输出完全一致,适合需要先对camps列做额外处理的场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 20:35:21