Pandas div具有多个索引

时间:2016-12-22 18:59:10

标签: python pandas divide

我一直面临以下问题。我有一个带有多个索引的数据框(这里有三个):

df = pd.DataFrame(np.random.randint(2, 8, size = (8, 1)))
df.index = pd.MultiIndex.from_tuples([(1990, 'Women','type_A'), (1990, 'Women','type_B'),(1990, 'Men','type_A'), (1990, 'Men','type_B'), 
(1991, 'Women','type_A'), (1991, 'Women','type_B'),(1991, 'Men','type_A'), (1991, 'Men','type_B')])
df.index.names = ['Year', 'Gender','Type']
df.columns = ['Total']

看起来像:

                     Total
Year Gender Type         
1990 Women  type_A      5
            type_B      7
     Men    type_A      6
            type_B      2
1991 Women  type_A      2
            type_B      6
     Men    type_A      3
            type_B      5

我一直在尝试按Type计算每个GenderYear的份额,但我没有找到任何有关SOF的明确答案。在一天结束时,我需要获得以下df:

                     Share
Year Gender Type          
1990 Women  type_A  0.4166
            type_B  0.5833
     Men    type_A  0.7500
            type_B  0.2500
1991 Women  type_A  0.2500
            type_B  0.7500
     Men    type_A  0.3750
            type_B  0.6250

通常情况下,我会使用div函数来完成它,但它似乎不适用于多个索引。有人遇到过类似的情况吗?提前致谢 !

1 个答案:

答案 0 :(得分:1)

一种选择是按年份和性别计算总和组,然后将原始数据框除以总和(结果略有不同,因为您没有为随机生成器设置种子):

[username[:password]@][protocol[(address)]]/dbname?collation=utf8mb4_unicode_ci

enter image description here