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