fuz*_*_77 8 python pivot group-by dataframe pandas
我正在尝试研究如何使用groupbypandas中的函数来计算每年使用给定的是/否标准的值的比例.
例如,我有一个名为的数据框names:
Name Number Year Sex Criteria
0 name1 789 1998 Male N
1 name1 688 1999 Male N
2 name1 639 2000 Male N
3 name2 551 1998 Male Y
4 name2 499 1999 Male Y
Run Code Online (Sandbox Code Playgroud)
我可以用
namesgrouped = names.groupby(["Sex", "Year", "Criteria"]).sum()
Run Code Online (Sandbox Code Playgroud)
要得到:
Number
Sex Year Criteria
Male 1998 N 14507
Y 2308
1999 N 14119
Y 2331
Run Code Online (Sandbox Code Playgroud)
等等.我希望"数字标准"列显示每个性别和年份总数的百分比 - 因此,除了1998年以上的N = 14507和Y = 2308,我有N = 86.27%和Y = 13.73%.
任何人都可以建议如何做到这一点?
Ian*_*anS 22
此问题是建议的副本的直接扩展.借用已接受的答案,这将有效:
In [46]: namesgrouped.groupby(level=[0, 1]).apply(lambda g: g / g.sum())
Out[46]:
Number
Sex Year Criteria
Male 1998 N 0.588806
Y 0.411194
1999 N 0.579612
Y 0.420388
2000 N 1.000000
Run Code Online (Sandbox Code Playgroud)