Pandas如何将列名转为数据值 实现类似R中model.matrix的效果
Pandas独热编码转列名拼接因子变量实现
你需要实现的是将每行取值为1的列名拼接为字符串,生成目标数据框,在Pandas中可以通过矩阵点乘的方式快速实现,代码如下:
首先导入依赖、定义输入数据:
import pandas as pd x1 = pd.DataFrame({'A': [1,0,0], 'B': [0,1,0], 'C': [0,1,1]})
核心转换代码
一行代码即可得到你需要的x2结果:
x2 = pd.DataFrame({'All': x1.dot(x1.columns)})
运行后x2的输出和你给出的目标结果完全一致:
| 序号 | All |
|---|---|
| 0 | A |
| 1 | BC |
| 2 | C |
可选:转换为分类(因子)变量
如果你需要将结果列定义为因子变量,可额外执行:
# 若需要自定义因子水平,可传入categories参数指定取值范围 x2['All'] = pd.Categorical(x2['All'])
内容的提问来源于stack exchange,提问作者Expectation mean first moment
相关产品推荐
相关产品推荐

