【问题标题】:convert multiple coulmns into the categories of one column in pandas [closed]将多列转换为熊猫中一列的类别[关闭]
【发布时间】:2021-02-23 14:50:06
【问题描述】:
这是一个使用热编码转换的数据集,0 表示否,1 表示是
数据:
| ID |
Red |
Blue |
Green |
Yellow |
Orange |
| 1001 |
1 |
0 |
1 |
0 |
1 |
| 1002 |
0 |
1 |
0 |
1 |
0 |
| 1003 |
0 |
0 |
0 |
1 |
1 |
| 1004 |
0 |
0 |
0 |
0 |
0 |
| 1005 |
1 |
0 |
0 |
1 |
0 |
如何在 Pandas 中将上面的一个热编码数据集转换为下面的一个
预期输出:
| ID |
Colour |
| 1001 |
Red |
| 1001 |
Green |
| 1001 |
Orange |
| 1002 |
Blue |
| 1002 |
Yellow |
| 1003 |
Yellow |
| 1003 |
Orange |
| 1005 |
Red |
| 1005 |
Yellow |
【问题讨论】:
标签:
pandas
data-analysis
data-cleaning
one-hot-encoding
data-preprocessing
【解决方案1】:
这可以使用.dot解决
df.set_index('ID',inplace=True)
res = df.dot(df.columns + ',').str.rstrip(',').str.split(',').explode().reset_index(name='Colour')
分辨率:
ID colour
0 1001 Red
1 1001 Green
2 1001 Orange
3 1002 Blue
4 1002 Yellow
5 1003 Yellow
6 1003 Orange
7 1004
8 1005 Red
9 1005 Yellow
如果你想在index 7 删除不包含任何内容的元素,那么就这样做
res = res.replace('', np.nan).dropna()