在另一个列熊猫数据框中获取布尔值列

时间:2019-01-24 14:10:15

标签: python-3.x pandas dataframe apply

我有一个数据框,如果“设施”列中有“电梯”,我想创建一个称为电梯的布尔列。

enter image description here

此代码生成TypeError:“ float”类型的参数不可迭代:

df['elevator'] = df['amenities'].apply(lambda x: True if 'Elevator' in x else False)

此代码生成所有错误,

df['elevator'] = 'Elevator' in df['amenities']

关于地址包含电梯的情况下如何最好地获得对/错的任何想法?

谢谢。

可以使用以下代码创建数据框:

pd.DataFrame({'address': {0: '201 East 12th St',
  1: 'East 17 st',
  2: '507 W 134th St Apt 54',
  3: 'Blue Slip'},
 'amenities': {0: 'Elevator',
  1: 'Elevator',
  2: 'Laundry in Unit ; Hardwood Floors',
  3: 'Doorman ; Elevator ; Laundry in Unit ; Hardwood Floors'}})

1 个答案:

答案 0 :(得分:2)

我认为您需要containsna=False才能将NaN或数字转换为False

还要感谢@jpp提出的提高性能的想法-使用regex=False

df['elevator'] = df['amenities'].str.contains('Elevator', na=False, regex=False)
print (df)
                 address                                          amenities  \
0       201 East 12th St                                           Elevator   
1             East 17 st                                           Elevator   
2  507 W 134th St Apt 54                  Laundry in Unit ; Hardwood Floors   
3              Blue Slip  Doorman ; Elevator ; Laundry in Unit ; Hardwoo...   

   elevator  
0      True  
1      True  
2     False  
3      True