【发布时间】:2018-03-22 07:10:09
【问题描述】:
我有一个包含类别(A、B、C、D)的列,我想将其转换为虚拟变量。问题是,该列每行可以包含多个类别,如下所示:
DF = pd.DataFrame({'Col':['A', 'A, B', 'A, C', 'B, C, D', 'D']})
Col
0 A
1 A, B
2 A, C
3 B, C, D
4 D
此时我的想法是首先使用“,”作为分隔符将变量拆分为多个字段,然后对结果进行虚拟编码。像这样的:
DF2 = DF['Col'].str.split(', ', expand = True)
0 1 2
0 A None None
1 A B None
2 A C None
3 B C D
4 D None None
pd.get_dummies(DF2)
0_A 0_B 0_D 1_B 1_C 2_D
0 1 0 0 0 0 0
1 1 0 0 1 0 0
2 1 0 0 0 1 0
3 0 1 0 0 1 1
4 0 0 1 0 0 0
最后,在列中运行某种循环,为 A、B、C 和 D 创建一组虚拟变量。这可以工作,但如果有更多变量/类别,就会变得非常乏味。有没有更简单的方法来实现这一点?
【问题讨论】: