首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果存在于df中的列中,则创建具有True或False值的新列

如果存在于df中的列中,则创建具有True或False值的新列
EN

Stack Overflow用户
提问于 2020-11-09 06:39:05
回答 1查看 57关注 0票数 1

在我的df中有一篇专栏文章如下所示:

代码语言:javascript
复制
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的值?

预期输出:

代码语言:javascript
复制
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

谢谢你找我

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-09 06:43:55

Series.str.get_dummies与转换为布尔值一起使用,按DataFrame.reindex中的列表添加缺失的值,最后添加到原始值:

代码语言:javascript
复制
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)))

代码语言:javascript
复制
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  
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64746846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档