Получение логического столбца для значения в другом столбце данных панды - PullRequest
0 голосов
/ 24 января 2019

У меня есть фрейм данных, и я хотел бы создать логический столбец с именем Лифт, если в столбце удобств есть «Лифт».

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']

Любая идея о том, как наилучшим образом получить истинное значение /false, если адрес содержит лифт?

Спасибо.

Кадр данных можно создать с помощью этого кода:

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 голосов
/ 24 января 2019

Я думаю, вам нужно 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  
...