Skip to main content
 首页 » 编程设计

python之将 Pandas 列乘以多索引值

2025年05月04日10lyj

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

我正在尝试这样的事情:

df = df.reset_index(level=2, drop=True) 
df['TOTAL'] = df['POP.'] * output['PERCENT'] 

我收到 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 

期望的输出

                               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 

请您参考如下方法:

你需要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