gpt4 book ai didi

python - 如何在 Pandas 中使用groupby根据另一列中的标准计算百分比/比例总数

转载 作者:太空狗 更新时间:2023-10-29 20:37:02 24 4
gpt4 key购买 nike

我正在尝试研究如何使用 pandas 中的 groupby 函数根据给定的是/否标准计算每年的值比例。

例如,我有一个名为 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

我可以用

namesgrouped = names.groupby(["Sex", "Year", "Criteria"]).sum()

获得:

                   Number
Sex Year Criteria
Male 1998 N 14507
Y 2308
1999 N 14119
Y 2331

等等。我希望“数字标准”列显示每个性别和年份的总数百分比 - 因此上面的 1998 年不是 N = 14507 和 Y = 2308,而是 N = 86.27% 和 Y = 13.73%。

谁能建议如何做到这一点?

最佳答案

这个问题是suggested duplicate的直接延伸.借用已接受的答案,这将起作用:

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

编辑:转换操作可能比应用更快:

namesgrouped / namesgrouped.groupby(level=[0, 1]).transform('sum')

关于python - 如何在 Pandas 中使用groupby根据另一列中的标准计算百分比/比例总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36987829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com