将字符串转换为虚拟编码变量

时间:2017-08-23 04:42:58

标签: python r dummy-variable

这是数据

PlayerID, Characters, Win or Lose

我可以看起来像这样

8PYPY0LLQ,valkyrie5 ,  chr_witch4 ,  hog_rider5 ,  zapMachine1 ,  mega_minion3 ,  baby_dragon2 ,  bomber7 ,  skeleton_horde1, 0

或者像这样

2GRG822L9,"barbarians8, valkyrie5, chr_balloon3, fire_spirits8, minion8, firespirit_hut6, rage4, skeleton_horde3,",1

第二列是70多个字符的8个字符组合。

我需要将变量编码为虚拟变量,因此每个字符都有自己的列。有没有办法在python / R中执行此操作?我假设您必须将第二列保留为字符串,而不是输出看起来像这样的csv文件。

2GRG822L9,barbarians8, valkyrie5, chr_balloon3, fire_spirits8, minion8, firespirit_hut6, rage4, skeleton_horde3,1
8PYPY0LLQ,valkyrie5 ,  chr_witch4 ,  hog_rider5 ,  zapMachine1 ,  mega_minion3 ,  baby_dragon2 ,  bomber7 ,  skeleton_horde1,0

在虚拟编码之前它应该看起来像这样

2GRG822L9,"barbarians8, valkyrie5, chr_balloon3, fire_spirits8, minion8, firespirit_hut6, rage4, skeleton_horde3,",1
8PYPY0LLQ,"valkyrie5 ,  chr_witch4 ,  hog_rider5 ,  zapMachine1 ,  mega_minion3 ,  baby_dragon2 ,  bomber7 ,  skeleton_horde1,",0

1 个答案:

答案 0 :(得分:0)

我不知道这是否是最好的方法,但我建议先使用以下代码将这8个字符串拆分为8列:

df['Characters'].str[1:-1].str.split(',', expand=True).astype(str)

然后对这8列中的每一列使用以下代码来创建虚拟对象:

pd.get_dummies(df['your columns'])

可能会创建唯一字符的重复列,但您可以轻松地将它们合并在一起。