更新时间:2023-01-23 10:11:16
You can use str.get_dummies
mainly:
df = df['Products'].str.get_dummies(';').add_prefix('Has_')
print (df)
Has_A Has_B Has_C Has_D
0 1 1 0 0
1 1 0 0 0
2 1 0 1 1
示例:
还添加了带有 replace
的解决方案由使用list comprehension
创建的dict
并添加了NaN
和None
.
There is also add solution with replace
by dict
created with list comprehension
and added NaN
and None
.
df = pd.DataFrame({'Products': ['A;B', 'A', 'D;A;C', 'No prods', np.nan, 'None']})
print (df)
Products
0 A;B
1 A
2 D;A;C
3 No prods
4 NaN
5 None
L = ['No prods','None']
d = {x :'No product' for x in L + [None, np.nan]}
df['Products'] = df['Products'].replace(d)
df = df['Products'].str.get_dummies(';').add_prefix('Has_')
print (df)
Has_A Has_B Has_C Has_D Has_No product
0 1 1 0 0 0
1 1 0 0 0 0
2 1 0 1 1 0
3 0 0 0 0 1
4 0 0 0 0 1
5 0 0 0 0 1