Как вы используете условия на пандах на разных столбцах - PullRequest
0 голосов
/ 20 октября 2018

Я пытаюсь найти топ-5 задержанных маршрутов со всех рейсов, а затем подсчитать все рейсы с погодными условиями, способствующими задержке.Используя этот код, я могу получить первые пять задержанных маршрутов

    flights_df.groupby(['Origin','Dest','WeatherDelay', flights_df.DepDelay>0])['WeatherDelay'].count().sort_values(ascending=False).head(5)

Dataframe dataframe image здесь вывод

    Origin  Dest  WeatherDelay  DepDelay
    LAX     SFO   0.0           True        3261
    ORD     LGA   0.0           True        3136
    ATL     LGA   0.0           True        2900
    SFO     LAX   0.0           True        2889
    LGA     ORD   0.0           True        2640
         Name: WeatherDelay, dtype: int64

Как будетЯ поставил условие WeatherDelay> 0, чтобы получить задержку для 5 лучших маршрутов в зависимости от погоды?

Вот загвоздка: у меня есть пункт отправления и пункт назначения.Я должен сформировать маршруты, затем найти количество отложенных маршрутов.Также я должен узнать количество рейсов, задержанных по погоде на этих 5 маршрутах.

Ответы [ 3 ]

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

Выберите то, что вам нужно, из вашего фрейма данных, прежде чем сгруппировать их:

flights_df[(flights_df.DepDelay > 0) & (flights_df.WeatherDelay > 0)].groupby(['Origin','Dest','WeatherDelay'])['WeatherDelay'].count().sort_values(ascending=False).head(5)

Сверните ваши условия в скобках (flights_df.DepDelay > 0) & (flights_df.WeatherDelay > 0)

Если вы хотите 5 лучших по маршрутам, вы должны сгруппировать поваше определение маршрута, в данном случае группа по источникам и пунктам назначения.

df.fillna(0, inplace = True)

df[(df.DepDelay > 0) & (df.WeatherDelay > 0)].groupby(['Origin','Dest'])['Origin'].count().sort_values(ascending=False).head(5)
0 голосов
/ 20 октября 2018

Я взял на себя смелость и взял пример, чтобы получить это:

>>> mdf
    Name Product  Sale  Number
0   jack  Apples    34       1
1   Riti  Mangos    31       2
2   Aadi  Grapes    30       3
3  Sonia  Apples    32       4
4   Lucy  Mangos    33       5
5   Mike  Apples    35       6

Итак, я взял, если Sale больше 31 & Number - это ge 3, затем распечатать DataFrame ..

>>> mdf[ (mdf['Sale'] > 31) & (mdf['Number'] >3) ]
    Name Product  Sale  Number
3  Sonia  Apples    32       4
4   Lucy  Mangos    33       5
5   Mike  Apples    35       6

Данные предоставлены по ссылке:

>>> df[ (df['DepDelay'] !=0 ) & (df['WeatherDelay'] !=0) ].head()
  DepDelay Origin Dest WeatherDelay
0        8    IAD  TPA
1       19    IAD  TPA
2        8    IND  BWI
3       -4    IND  BWI
5       25    IND  JAX
0 голосов
/ 20 октября 2018

Чтобы создать несколько условий при индексации, вы можете использовать:

dataframe[(dataframe["column1"] > condition1) & (dataframe["column2"] > condition2)]

Вы можете использовать & для и, |для или.

Вы также можете посмотреть в np.where()

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