Умножение одноуровневого фрейма данных на многоуровневый фрейм данных - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть фрейм данных df как:

node    date_   A1                 A2            
bkt             B1         B2      B1         B2   
0   1/1/2015    0.9        1       2          1
1   1/2/2015    0.7        0.6     5          6
2   1/3/2015    0.9        1       9          23

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

У меня есть другой фрейм данных df2 как:

bkt             B1       B2  
0   1/1/2015    2        1   
1   1/2/2015    2        2
2   1/3/2015    3        1   

Возможно ли умножить df на df1 чтобы умножить соответствующие столбцы B1 и B2, чтобы получить следующие результаты:

node    date_   A1                 A2            
bkt             B1         B2      B1         B2   
0   1/1/2015    1.8        1       4          1
1   1/2/2015    1.4        1.2     10         12
2   1/3/2015    2.7        1       27         23

1 Ответ

3 голосов
/ 02 апреля 2020

Да, вы можете:

df_out = df.copy()
df_out.loc[:,['A1','A2']] = df.mul(df2, level=1, axis='columns')

Вывод:

node     date_   A1       A2    
bkt              B1   B2  B1  B2
0                               
0     1/1/2015  1.8  1.0   4   1
1     1/2/2015  1.4  1.2  10  12
2     1/3/2015  2.7  1.0  27  23
...