Поиск в столбцах фрейма данных в строке типа (содержащей числовые значения c диапазон) с пользовательскими входными данными, имеющими тип float - PullRequest
0 голосов
/ 30 мая 2020

Пытаюсь использовать только python установленных библиотек и pandas библиотек, потому что я полный новичок. Я заканчиваю 6-недельный курс python по основам.

Для последнего проекта я делаю руководство по покупке растений. На основании серии вопросов, которые я задаю пользователю, я разбираю фрейм данных, содержащий 60 записей. Чтобы дать вам представление, в первом разделе моего вопроса был создан отфильтрованный фрейм данных с использованием этого кода

care_df = df.loc[
    lambda x:
    (x['sunlight'].str.lower().str.contains(user_sunlight_pref.lower()))
    & (x['watering_levels'].str.lower().str.contains(user_water_pref.lower()))
    & (x['humidity_preference'].str.lower().str.contains(user_humidity_pref.lower()))
    ]

, где user_sunlight_pref сохранял ввод пользователя (ie возможно, они выбрали «Непрямой свет» в качестве предпочтения солнечного света) .

ТЕПЕРЬ я перехожу ко второму разделу вопросов, где я начинаю спрашивать о высоте и размахе. Столбцы фрейма данных, которые я буду искать, имеют следующий формат ввода: «от 1,00 до 2,00 футов».

МОЙ ВОПРОС / ПРОБЛЕМА: Для вопросов пользователей я попытался создать описательные диапазоны, которые я представляю пользователю как возможные варианты, которые они отправляют в качестве входных данных:

"Desk range- plants that are appropriate for desks and surfaces, like short bookshelves or corner areas."
" These plants will not block eyesight."

Вкл. На задней панели я хочу создать диапазон чисел c, например «диапазон стола» = что-нибудь от 0,25 до 1,50, который я затем мог бы использовать для поиска во фрейме данных. У меня возникли проблемы с продумыванием того, какой тип (ы) использовать, как создать диапазон для значений столбца моего фрейма данных (например, от 1,00 до 2,00) футов ......

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

if user_height_pref == 'Desk range'
   user_height_pref = [0.25 to 1.00 feet, 0.25 to 0.75 feet, 1.00 to 1.50 feet...] 

, но тогда как мне выполнить поиск по столбцу высоты моего фрейма данных ? Не знаете, как искать / сопоставлять элементы этого списка с моим столбцом фрейма данных (с использованием кода, аналогичного care_df)

1 Ответ

0 голосов
/ 30 мая 2020

Вы можете фильтровать по нескольким критериям.

df1 = df[(df['Feet'] >=0.25) & (df['Feet'] <= 1.0)]

Вы также можете проверить этот пост.

Как выбрать строки в DataFrame между двумя значениями, в Python Pandas?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...