Фильтрация+анализ данных
Задача: Отфильтруйте все строительные объекты, кроме тех, что на этапе строительства «Котлован» и на этапе «Заморожено». Сколько их в датасете?
Решение:
filter = ~(dataset[['Этап строительства']=='Котлован' & dataset['Этап строительства']=='Заморожено'].isin(districts))
filtered_dataset = dataset[filter]
filtered_dataset.head()
Строка пишет ошибку:
TypeError Traceback (most recent call last)
/usr/local/lib/python3.7/dist-packages/pandas/core/ops/array_ops.py in na_logical_op(x, y, op)
301 # (xint or xbool) and (yint or bool)
\--\> 302 result = op(x, y)
303 except TypeError:
9 frames
TypeError: unsupported operand type(s) for &: 'str' and 'float'
During handling of the above exception, another exception occurred:
TypeError Traceback (most recent call last)
TypeError: unsupported operand type(s) for &: 'bool' and 'str'
The above exception was the direct cause of the following exception:
TypeError Traceback (most recent call last)
/usr/local/lib/python3.7/dist-packages/pandas/core/ops/array_ops.py in na_logical_op(x, y, op)
326 f"Cannot perform '{op.__name__}' with a dtyped \[{x.dtype}\] array "
327 f"and scalar of type \[{typ}\]"
\--\> 328 ) from err
329
330 return result.reshape(x.shape)
TypeError: Cannot perform 'rand\_' with a dtyped \[object\] array and scalar of type \[bool\]
Вот только не пойму, видимо где-то синтаксис не так завернул. Или что-то еще не так ?
Ответы (2 шт):
Автор решения: strawdog
→ Ссылка
Много лишнего, в решении, и неоптимальная логика. Попробуйте так:
filtered_dataset = dataset[~dataset['Этап строительства'].isin(['Котлован', 'Заморожено'])]
Автор решения: SouStan
→ Ссылка
Верное решение моего вопроса:
filter = ~dataset['Этап строительства'].isin(['Котлован', 'Заморожено'])
filtered_dataset = dataset[filter]
filtered_dataset