Pandas div 有多个索引
Pandas div with multiple index
我一直面临以下问题。我有一个具有多个索引的数据框(这里是三个):
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
我一直在尝试通过 Year
计算每个 Type
和 Gender
的份额,但我没有在 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
函数来完成它,但它似乎不适用于多个索引。有人遇到过类似情况吗?提前致谢 !
一种选择是按年份和性别计算总和,然后将原始数据框除以总和(结果略有不同,因为您没有为随机生成器设置种子):
df/df.groupby(level=[0, 1]).transform('sum')
我一直面临以下问题。我有一个具有多个索引的数据框(这里是三个):
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
我一直在尝试通过 Year
计算每个 Type
和 Gender
的份额,但我没有在 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
函数来完成它,但它似乎不适用于多个索引。有人遇到过类似情况吗?提前致谢 !
一种选择是按年份和性别计算总和,然后将原始数据框除以总和(结果略有不同,因为您没有为随机生成器设置种子):
df/df.groupby(level=[0, 1]).transform('sum')