Как установить агрегацию после группового? - PullRequest
2 голосов
/ 12 января 2020

Учитывая, что у меня есть набор данных, как показано ниже:

dt = {
    "facility":["Ann Arbor","Ann Arbor","Detriot","Detriot","Detriot"],
    "patient_ID":[4388,4388,9086,9086,9086],
    "year":[2004,2007,2007,2008,2011],
    "month":[8,9,9,6,2],
    "Nr_Small":[0,0,5,12,10],
    "Nr_Medium":[3,1,1,4,3],
    "Nr_Large":[2,0,0,0,0],
    "PeriodBetween2Visits" : [10,0,12,3,1],
    "NumberOfVisits" : [2,2,3,3,3]

}

dt = pd.DataFrame(dt)

мне нужно сохранить groupby patient_ID, затем сохранить facility, patient_ID, NumberOfVisits, но Максимум и минимум из PeriodBetween2Visits.

Вот что я попробовал:

dt = dt.groupby(['patient_ID'],as_index=False)["facility","patient_ID","PeriodBetween2Visits","NumberOfVisits"].agg({'PeriodBetween2Visits': ['min', 'max']})


dt.head()

Но это не то, что мне нужно!

Правильный вывод для меня, как показано ниже:

enter image description here

1 Ответ

2 голосов
/ 12 января 2020

Я использую именованную агрегацию, которая была встроена в groupby, и agg недавно :

 dt.groupby(['facility','patient_ID']).agg(
                 Min_PeriodBetween2Visits=('PeriodBetween2Visits','min'),
                 Max_PeriodBetween2Visits=('PeriodBetween2Visits','max'),
                 NumberOfVisits=('NumberOfVisits','nunique')).reset_index()

    facility  patient_ID  Min_PeriodBetween2Visits  Max_PeriodBetween2Visits  \
0  Ann Arbor        4388                         0                        10   
1    Detriot        9086                         1                        12   

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