Выбор строк на основе нескольких условий с помощью панд Python - PullRequest
0 голосов
/ 22 октября 2018

Привет! Я пытаюсь найти строку, которая удовлетворяет нескольким пользовательским вводам, я хочу, чтобы результат возвращал одну строку, которая соответствует дате вылета и пункту назначения, при этом исходный аэропорт - Атланта.Если они вводят что-то еще, он возвращает ошибку и завершает работу.

Входные данные - это CSV, который выглядит следующим образом:

    FL_DATE ORIGIN  DEST    DEP_TIME
5/1/2017    ATL IAD 1442
5/1/2017    MCO EWR 932
5/1/2017    IAH MIA 1011
5/1/2017    EWR TPA 1646
5/1/2017    RSW EWR 1054
5/1/2017    IAD RDU 2216
5/1/2017    IAD BDL 1755
5/1/2017    EWR RSW 1055
5/1/2017    MCO EWR 744

Мой текущий код:

import pandas as pd

df=pd.read_csv("flights.data.csv") #import data frame

input1 = input ('Enter your flight date in MM/DD/YYYY: ') #input flight date
try:
    date = str(input1) #flight date is a string
except:
    print('Invalid date') #error message if it isn't a string
    quit()

input2 = input('Enter your destination airport code: ') #input airport code
try:
    destination = str(input2) #destination is a string
except:
    print('Invalid destination airport code') #error message if it isn't a string
    quit()

df.loc[df['FL_DATE'] == date] & df[df['ORIGIN'] == 'ATL'] & df[df['DEST'] == destination]
#matches flight date, destination, and origin has to equal to GNV

Идеальный вывод - просто вернуть первую строку, если я введу 5/1/2017 в качестве «даты» и «IAD» в качестве пункта назначения.

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Вы должны быть в состоянии решить вашу проблему с приведенным ниже примером.Ваш синтаксис был неправильным для нескольких условий

import pandas as pd    
df=pd.DataFrame({'FL_DATE':['5/1/2017'],'ORIGIN':['ATL'],'DEST':['IAD'],'DEP_TIME':[1442]})
df.loc[(df['FL_DATE'] == '5/1/2017') & (df['ORIGIN'] == 'ATL') & (df['DEST'] == 'IAD')]

Дает

DEP_TIME    DEST    FL_DATE     ORIGIN
1442        IAD     5/1/2017    ATL

Вы должны изменить свой код на что-то вроде этого

df.loc[(df['FL_DATE'] == date) & (df['ORIGIN'] == 'ATL') & (df['DEST'] == destination)]
0 голосов
/ 22 октября 2018

В вашем выражении loc вам нужно исправить скобки и добавить скобки между условиями:

df.loc[(df['FL_DATE'] == input1) & (df['ORIGIN'] == 'ATL') & (df['DEST'] == input2)]

Тогда это сработает:

>>> df.loc[(df['FL_DATE'] == date) & (df['ORIGIN'] == 'ATL') & (df['DEST'] == destination)]

    FL_DATE ORIGIN DEST  DEP_TIME
0  5/1/2017    ATL  IAD      1442
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...