IIUC,你可以用
pd.get_dummies
,在删除重复项之后,这将比以迭代方式执行此操作更快并产生更干净的代码:
df.drop_duplicates().join(pd.get_dummies(df.drop_duplicates()))
label label_label1 label_label11 label_label23 label_label3
0 label1 1 0 0 0
2 label23 0 0 1 0
3 label3 0 0 0 1
4 label11 0 1 0 0
你可以去掉那些
label
前缀和下划线使用
prefix
和
prefix_sep
论据:
df.drop_duplicates().join(pd.get_dummies(df.drop_duplicates(),
prefix='', prefix_sep=''))
label label1 label11 label23 label3
0 label1 1 0 0 0
2 label23 0 0 1 0
3 label3 0 0 0 1
4 label11 0 1 0 0
编辑
:第二列,即:
>>> df
label second_column
0 label1 a
1 label1 b
2 label23 c
3 label3 d
4 label11 e
只要打电话
警察去拿假人
仅在“标签”列上:
df.drop_duplicates('label').join(pd.get_dummies(df['label'].drop_duplicates(),
prefix='', prefix_sep=''))
label second_column label1 label11 label23 label3
0 label1 a 1 0 0 0
2 label23 c 0 0 1 0
3 label3 d 0 0 0 1
4 label11 e 0 1 0 0
但是你要去掉没有重复的行,我认为这不是你想要的(除非我错了)。如果没有,请忽略drop duplicates调用:
df.join(pd.get_dummies(df['label'], prefix='', prefix_sep=''))
label second_column label1 label11 label23 label3
0 label1 a 1 0 0 0
1 label1 b 1 0 0 0
2 label23 c 0 0 1 0
3 label3 d 0 0 0 1
4 label11 e 0 1 0 0