Сводная таблица в pandas фрейме данных с многоуровневыми столбцами - PullRequest
1 голос
/ 27 марта 2020

У меня есть pandas фрейм данных df, который выглядит следующим образом:

node    date_   A1         A2   Month
bkt             B1         B2   
0   1/1/2015     0.98       1
1   1/2/2015     0.71    0.96   1
2   1/3/2015     0.98       1
3   2/4/2015     0.34       2
4   2/2/1900     0.96    1.57   2
5   2/6/2015     0.01    0.03   2
6   3/7/2015     0.30    0.25   3

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

Month   A1   A2
        B1   B2
1    0.89    0.96
2    0.44    0.80 
3    0.30    0.25 

где

0.89 = avreage(0.98, 0.71, 0.98) 
0.80 = average(1.57, 0.03)

где для каждого месяца я хочу группировать по (A1, B1) и (A2, B2), чтобы получить среднее значение. Я не уверен, как сделать эту многоуровневую группировку.

Редактировать:

df.columns
MultiIndex([( 'date_', ''),
            ( 'A1', 'B1'),
            ( 'A2',  'B2'),
            ( 'Month', '')],
           names=['node', 'bkt'])

1 Ответ

1 голос
/ 27 марта 2020

IIU C:

df['date_'] = pd.to_datetime(df['date_'])
df.drop(('Month',''), axis=1).groupby(df['date_'].dt.month).mean()

Выход:

node         A1        A2
bkt          B1        B2
date_                    
1      0.890000  0.986667
2      0.436667  1.200000
3      0.300000  0.250000
...