在我的df中有一篇专栏文章如下所示:
Service
DoorDash, Grubhub / Seamless, UberEats, Postmates
DoorDash, UberEats, Caviar, Tock
DoorDash
None
Caviar, Tock
None
Tock
DoorDash, Grubhub / Seamless, UberEats, Postmates
Grubhub / Seamless, UberEats是否有一种有效的方式,可以为每个服务创建一个新列,如果服务列中存在该服务,则新列中的值将为真值或布尔值。
,所以如果我有一个服务名称的列表,比如:
DoorDash,格鲁布中心/无缝,UberEats,鱼子酱,邮差,JustEat,Deliveroo,Foodora,Grab,Talabat
我希望为上面列表中的每个名称创建一个列,并根据服务列中是否存在该服务而具有一个True或False的值?
预期输出:
Service | DoorDash | Grubhub / Seamless | UberEats| Caviar | Postmates | JustEat | Deliveroo | Foodora | Grab | Talabat | Tock
DoorDash, Grubhub / Seamless, UberEats, Postmates True True True False True False False False False False False
DoorDash, UberEats, Caviar, Tock True False True True False False False False False False True
DoorDash True False False False False False False False False False False
None False False False False False False False False False False False
Caviar, Tock False False False True False False False False False False True
None False False False False False False False False False False False
Tock False False False False False False False False False False True
DoorDash, Grubhub / Seamless, UberEats, Postmates True True True False True False False False False False False
Grubhub / Seamless, UberEats False True True False False False False False False False False谢谢你找我
发布于 2020-11-09 06:43:55
将Series.str.get_dummies与转换为布尔值一起使用,按DataFrame.reindex中的列表添加缺失的值,最后添加到原始值:
L = ['DoorDash', 'Grubhub / Seamless', 'UberEats', 'Caviar',
'Postmates', 'JustEat', 'Deliveroo', 'Foodora', 'Grab', 'Talabat']
df1 = (df.join(df['Service'].str.get_dummies(', ')
.astype(bool)
.reindex(L, axis=1, fill_value=False)))print (df1)
Service DoorDash \
0 DoorDash, Grubhub / Seamless, UberEats, Postmates True
1 DoorDash, UberEats, Caviar, Tock True
2 DoorDash True
3 None False
4 Caviar, Tock False
5 None False
6 Tock False
7 DoorDash, Grubhub / Seamless, UberEats, Postmates True
8 Grubhub / Seamless, UberEats False
Grubhub / Seamless UberEats Caviar Postmates JustEat Deliveroo \
0 True True False True False False
1 False True True False False False
2 False False False False False False
3 False False False False False False
4 False False True False False False
5 False False False False False False
6 False False False False False False
7 True True False True False False
8 True True False False False False
Foodora Grab Talabat
0 False False False
1 False False False
2 False False False
3 False False False
4 False False False
5 False False False
6 False False False
7 False False False
8 False False False https://stackoverflow.com/questions/64746846
复制相似问题