将 Pandas 列乘以多索引值

use*_*044 2 python python-2.7 pandas

我有一个多索引数据框,索引上有三个级别。我想将每个百分比值乘以总人口。

我正在尝试这样的事情:

df = df.reset_index(level=2, drop=True)
df['TOTAL'] = df['POP.'] * output['PERCENT']
Run Code Online (Sandbox Code Playgroud)

我明白了KeyError: 'POP.'

启动数据框

                               PERCENT  
     DATE      POP.  SEX                
2015-01-01     100  MALE        0.51  
                    FEMALE      0.49  
2016-01-01     200  MALE        0.52  
                    FEMALE      0.48
Run Code Online (Sandbox Code Playgroud)

所需输出

                               PERCENT     TOTAL  
     DATE      POP.  SEX                
2015-01-01     100  MALE        0.51         51  
                    FEMALE      0.49         49
2016-01-01     200  MALE        0.52        104
                    FEMALE      0.48         96
Run Code Online (Sandbox Code Playgroud)

WeN*_*Ben 5

你需要get_level_values+values

df['TOTAL']=(df.index.get_level_values('POP')*df['PERCENT']).values
df
Out[874]: 
                       PERCENT  TOTAL
DATE       POP SEX                   
2015-01-01 100 MALE       0.51   51.0
               FEMALE     0.49   49.0
2016-01-01 120 Male       0.52   62.4
               FEMALE     0.48   57.6
Run Code Online (Sandbox Code Playgroud)