Как мне поместить входные данные в df python?

#python #dataframe

#python #фрейм данных

Вопрос:

введите описание изображения здесь

Возможно ли поместить пользовательский ввод в df? Здесь я прошу пользователя выбрать интересующий его город, чтобы найти цены на жилье, и вернуть пользователей с самыми низкими и самыми высокими ценами на жилье.

  1. Я жестко запрограммировал группу «YISHUN»>, когда предполагается, что это пользовательский ввод
  2. Кроме того, результаты сортируются по ценам. Как мне получить два значения — наименьшее и наибольшее?

Большое вам спасибо!

 sorted_df = df.sort_values("resale_price", ascending=True)
grouped_df = sorted_df.groupby("town")
grouped_df = grouped_df.get_group("YISHUN")
grouped_df = grouped_df[['resale_price']]
print(grouped_df)
 

Ответ №1:

На самом деле это очень просто:

 def get_hi_low(df, val):
    dummy_df = df[df['town']==val]
    return max(dummy_df['resale_price'].values), min(dummy_df['resale_price'].values)

val = input("Enter town name: ")
high, low = get_hi_low(df, val)

print(f'For town {val}, the highest value is: {high} and low is {low}')
 

Проверьте, работает ли это.

Редактировать: создание этого как функции имеет много преимуществ. На самом деле, когда это возможно, вы обычно должны кодировать с использованием функций.

Итак, допустим, у вас просто не один, а много пользователей. Например:

 town_list = ['Town_A', 'Town_B', 'Town_C']
 

Теперь вы можете обойти все эти:

 for town in town_list:
    high, low = get_hi_low(df, town)
    print(f'For town {town}, the highest value is: {high} and low is {low}')
 

Итак, теперь для каждого города это приведет к высокому и низкому значению цены перепродажи.

И поскольку в вашем случае это пользовательский ввод? Ну, вы тоже можете сделать это таким образом:

 while True:
    town = input("Enter town name: ")
    
    if town=='exit':
        break

    high, low = get_hi_low(df, town)
    print(f'For town {town}, the highest value is: {high} and low is {low}')
 

В этом случае пользователь продолжает вводить город, и для каждого случая это дает результат. Но помните, что в этом случае код никогда не останавливается. Единственный случай, когда он остановится, — это когда вы вводите ‘exit’ и цикл заканчивается. Последний быстрый совет. Этот код выдаст ошибку, если указанное название города не существует. Ну, в этом случае вы можете использовать try, кроме block . Ну, посмотрите, что такое try except .

Надеюсь, это имеет больше смысла. Если вы хотите больше узнать о функциях и даже о python, прежде чем переходить. Я могу предложить вам несколько бесплатных курсов и ссылки на них.

Комментарии:

1. БОЖЕ, ЭТО РАБОТАЕТ! Очень благодарен. Спасибо!

2. Я буду рад, если вы примете это как ответ на вопрос. Отметка галочки.

3. Да! Извините, все еще новичок в этом! 🙂 Еще один вопрос, не могли бы вы посоветовать, почему get_hi_low(df, val) в последней строке?

4. Большое вам спасибо! Вы находка! 🙂 Это именно то, что мне нужно!

5. Проверьте новое редактирование. Надеюсь, это немного упростит вашу работу.

Ответ №2:

 val = input("Enter column name: ")
print(df.groupby([val])['YEAR'].count())
 

Да, вы можете. Пожалуйста, попробуйте ввести входные данные перед вызовом групповой функции. Приведенный выше пример. Я только что попробовал, и я обнаружил, что это работает.

Комментарии:

1. Однако я получаю сообщение об ошибке, просто потому, что я такой новичок в этом: (