gpt4 book ai didi

python - 使用 Pandas Group By 和 .sum() 获得 % Rate

转载 作者:行者123 更新时间:2023-12-03 16:19:42 29 4
gpt4 key购买 nike

我想根据 .groupby() 获得一些百分比率在 pandas .我的目标是取一个指标列Ind并得到A(分子)的比率除以当年的总数(A + B)
示例数据:

import pandas as pd
import numpy as np
df: pd.DataFrame = pd.DataFrame([['2011','A',1,2,3], ['2011','B',4,5,6],['2012','A',15,20,4],['2012','B',17,12,12]], columns=["Year","Ind","X", "Y", "Z"])
print(df)
Year Ind X Y Z
0 2011 A 1 2 3
1 2011 B 4 5 6
2 2012 A 15 20 4
3 2012 B 17 12 12
2011 年示例: XRate将总结 X 的 A 指标(这将是 1)并除以总数(A + B),这将是 5,因此我将得到 0.20 的 Xrate。
我想对所有 X、Y、Z 列执行此操作以获得费率。我试过做 lambda 应用,但不能完全得到想要的结果。
预期结果:
   Year XRate YRate  ZRate
0 2011 0.20 0.29 0.33
1 2012 0.47 0.63 0.25

最佳答案

您可以 group Year 上的数据框并使用 sum 聚合:

s1 = df.groupby('Year').sum()
s2 = df.query("Ind == 'A'").groupby('Year').sum()

s2.div(s1).round(2).add_suffix('Rate')
      XRate  YRate  ZRate
Year
2011 0.20 0.29 0.33
2012 0.47 0.62 0.25

关于python - 使用 Pandas Group By 和 .sum() 获得 % Rate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65632305/

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