我想为TypePhase列添加虚拟变量。
wm_id TypePhase
2 ['N', 'A', 'B', 'C', 'D']
2 ['N', 'A', 'B', 'C', 'D']
3 ['N', 'W', 'A', 'B', 'C', 'D']
2 ['N', 'A', 'B', 'C', 'D']
3 ['N', 'P', 'A', 'B', 'C', 'D']
2 ['N', 'A', 'B', 'C', 'D']
我试过了df.TypePhase = df.TypePhase.apply(lambda s : '_'.join(s))
,但我没有得到预期的结果。我知道我需要申请
pd.get_dummies(df_new['TypePhase']).rename(columns=lambda x: 'AAAAAAAAA_' + str(x))
但我不能做对。 请问,有什么建议吗? 提前谢谢了。 卡罗
答案 0 :(得分:1)
我认为所有值都是TypePhase
列中的字符串,因此可以使用str.get_dummies
加倍str.strip
。
最后join
原件。
pop
函数提取原始列,所以不必删除它。
print (type(df.loc[0, 'TypePhase']))
<class 'str'>
df1 = df.pop('TypePhase').str.strip('[]').str.get_dummies(', ')
#remove ' from new column names
df1.columns = df1.columns.str.strip("'")
df = df.join(df1)
print (df)
wm_id A B C D N P W
0 2 1 1 1 1 1 0 0
1 2 1 1 1 1 1 0 0
2 3 1 1 1 1 1 0 1
3 2 1 1 1 1 1 0 0
4 3 1 1 1 1 1 1 0
5 2 1 1 1 1 1 0 0