我有一个数据框,如果“设施”列中有“电梯”,我想创建一个称为电梯的布尔列。
此代码生成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'}})
答案 0 :(得分:2)
我认为您需要contains
和na=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