как выбрать строку mutilindex? - PullRequest
0 голосов
/ 16 ноября 2018

Допустим, у меня есть мультииндексный фрейм данных, как показано ниже.

                      ROW_ID    HADM_ID ICUSTAY_ID
SUBJECT_ID  CHARTTIME           
23  2157-10-21 12:05:00 1   124321  234044.0
    2157-10-21 14:00:00 30  124321  234044.0
    2157-10-21 19:00:00 77  124321  234044.0
    2157-10-22 00:00:00 148 124321  234044.0
    2157-10-22 04:00:00 197 124321  234044.0
    2157-10-22 08:00:00 226 124321  234044.0
    2157-10-22 16:00:00 320 124321  234044.0
34  2191-02-23 08:00:00 367 144319  290505.0
    2191-02-23 12:00:00 450 144319  290505.0
    2191-02-23 15:00:00 476 144319  290505.0
    2191-02-23 20:00:00 511 144319  290505.0
    2191-02-24 00:00:00 538 144319  290505.0
    2191-02-24 04:00:00 567 144319  290505.0
    2191-02-24 07:00:00 608 144319  290505.0
    2191-02-24 12:00:00 648 144319  290505.0
36  2134-05-12 07:00:00 685 165660  241249.0
    2134-05-12 12:00:00 787 165660  241249.0
    2134-05-12 16:00:00 855 165660  241249.0
    2134-05-12 20:00:00 924 165660  241249.0
    2134-05-13 00:00:00 988 165660  241249.0

SUBJECT_ID и CHARTTIME - мультииндекс.Теперь я хочу получить строку каждого SUBJECT_ID с каждым первым CHARTTIME. Поэтому ожидаемый результат:

                      ROW_ID    HADM_ID ICUSTAY_ID
SUBJECT_ID  CHARTTIME  
23  2157-10-21 12:05:00 1   124321  234044.0
34  2191-02-23 08:00:00 367 144319  290505.0
36  2134-05-12 07:00:00 685 165660  241249.0

Я пытался использовать iloc и xs, но это не работает.любую помощь оценят.

1 Ответ

0 голосов
/ 16 ноября 2018

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

df = df.reset_index('CHARTTIME')
df = df.groupby(level=['SUBJECT_ID']).first().set_index('CHARTTIME', append=True)
...