извлечь уникальные значения и создать новый фрейм данных по условию - PullRequest
0 голосов
/ 03 сентября 2018

Предположим, это мой пример ввода df:

     date       h_league
0  19901126        AA
1  19911127        NA
2  20030130        AA
3  20041217       NaN
4  20080716        AA
5  20011215        NA
6  19970603       NaN

Я рассчитываю извлечь уникальные лиги из h_league, а также создать новые два столбца, одно из которых - max_date с максимальной датой и min_date - с минимальной датой для лиги.

# Desired Output:

  h_league   Max_date    Min_date
0    AA      20080716    19901126
1    NA      20011215    19911127

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

def league_info(league):
    league_games = df[df["h_league"] == league]
    earliest = df["date"].min()
    latest = df["date"].max()
    print("{} went from {} to {}".format(league,earliest,latest))

for league in df["h_league"].unique():
    league_info(league)

Я ищу способ панды для достижения желаемого результата. Любая помощь приветствуется. Спасибо!

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018
df2=df.fillna('NA')  
df2.groupby('h_league').date.agg(['max','min'])

Это работает для вас? Вы также можете назначить df=df.fillna('NA'). дайте мне знать, если это работает. Я попробовал это.

0 голосов
/ 03 сентября 2018

IIUC

df=df.fillna('NA')
df.groupby('h_league').date.agg(['max','min'])
Out[98]: 
               max       min
h_league                    
AA        20080716  19901126
NA        20041217  19911127
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...