Удалить строки, которые не имеют значения с плавающей точкой в ​​столбце - PullRequest
1 голос
/ 05 февраля 2020

У меня есть это df:

https://ibb.co/6RqmffH

Моя задача - найти результаты с этими условиями:

[(df.neighbourhood_group == 'Manhattan') & (df.room_type == 'Entire home/apt') & (df.price.between(150.0, 175.0))]`

Но это не работает. Сообщение об ошибке гласит:

TypeError: '> =' не поддерживается между экземплярами 'str' и 'float'

Поскольку в столбце price есть значение Private room где-то записано.

Как мне написать фрагмент кода, который говорит, что нужно сохранять только значения с плавающей запятой и отбрасывать все остальные?

ПРИМЕЧАНИЕ Это не работает:

1) df = df[df['price'].apply(lambda x: type(x) in [float])

2) clean['price']=df['price'].str.replace('Private room', '0.0')

3) clean.price = clean.price.astype(float)

4) df.select_dtypes(exclude=['str'])

В случае, если ImgBB не работает, это ссылка df: https://www.kaggle.com/dgomonov/new-york-city-airbnb-open-data#AB_NYC_2019 .csv

1 Ответ

0 голосов
/ 05 февраля 2020

Один из способов достижения этого:

df['price'] = df.apply(lambda r: r['price'] if type(x['price'])==float else np.nan, axis=1)
df.dropna(inplace=True)

Таким образом вы замените любую строку без плавающей запятой на np.nan, а затем удалите такую ​​строку.

...