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

如何用Python/Pandas将DataFrame指定列值转为1/0填充新列并重组?

问题描述

现有如下DataFrame:

import pandas as pd
Dat = pd.DataFrame({'a' : ['A', 'A', 'B', 'B'], 'b' : ['X', 'Y', 'X', 'Y'], 'val' : [1,12,-3,23]})

需要将其重组为如下结构:

pd.DataFrame({'A' : [1,1,0,0], 'B' : [0,0,1,1], 'X' : [1,0,1,0], 'Y' : [0,1,0,1], 'val' : [1,12,-3,23]})

即把原DataFrame中a、b列的取值作为新列,对应匹配的单元格填充1,不匹配的填充0。

解决方案

直接用pandas自带的pd.get_dummies()函数就能实现,这个函数专门用来将分类变量转换为独热编码形式的二进制列,完美匹配需求。

具体代码示例:

import pandas as pd

# 初始化原DataFrame
Dat = pd.DataFrame({'a' : ['A', 'A', 'B', 'B'], 'b' : ['X', 'Y', 'X', 'Y'], 'val' : [1,12,-3,23]})

# 对a、b列生成独热编码,同时保留val列
# 设置prefix为空,避免列名出现a_、b_这类前缀
result = pd.get_dummies(Dat, columns=['a', 'b'], prefix=['', ''])

print(result)

执行后输出的结果就和目标结构完全一致:

val  A  B  X  Y
0    1  1  0  1  0
1   12  1  0  0  1
2   -3  0  1  1  0
3   23  0  1  0  1

如果对列的顺序有要求,可以用reindex调整:

result = result.reindex(columns=['A', 'B', 'X', 'Y', 'val'])

调整后就和示例中的列顺序完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 14:34:59