gpt4 book ai didi

python - 如何在 pandas groupby 中获得前 3 个框聚合 - 在 10 分制中得分大于 7 的百分比?

转载 作者:太空宇宙 更新时间:2023-11-04 00:07:16 24 4
gpt4 key购买 nike

我有以下输入 Pandas 数据框:

Index respID company    month  score
0 101 AAA Oct'18 8
1 102 AAA Oct'18 10
2 103 AAA Oct'18 5
3 104 AAA Oct'18 4
4 105 BBB Oct'18 5
5 106 BBB Oct'18 6
6 107 BBB Oct'18 8
7 108 BBB Oct'18 1
8 109 AAA Nov'18 5
9 110 AAA Nov'18 10
10 111 AAA Nov'18 4
11 112 AAA Nov'18 7
12 113 AAA Nov'18 8
13 114 BBB Nov'18 9
14 115 BBB Nov'18 2
15 116 BBB Nov'18 5
16 117 BBB Nov'18 1

我需要用前 3 个框指标聚合一个 Pandas 数据框 - 在 10 分制中得分 8、9、10 出现的百分比。

因此,聚合后的输出 Pandas 数据框应该如下所示:

        Index   TOP3
(AAA, Oct'18) 0.50
(BBB, Oct'18) 0.25
(AAA, Nov'18) 0.40
(BBB, Nov'18) 0.25

有人告诉我这是营销中非常常见的指标,但我没有发现任何紧密的聚合。我尝试了几种方法,例如使用:

AGGR=df.groupby(['month','company'])['score'].apply(lambda x: pd.value_counts(x)/x.count())

但是我需要通过分数汇总等进行另一次聚合

有什么好的方法可以一次性聚合Top 3?

非常感谢!

最佳答案

groupby + mean:

d = dict(ratio=df.score >= 8)

df.assign(**d).groupby(['company', 'month'])['ratio'].mean()

company  month
AAA Nov'18 0.40
Oct'18 0.50
BBB Nov'18 0.25
Oct'18 0.25
Name: ratio, dtype: float64

使用相同的逻辑找到前 2、3、4:

d = dict(
top2=df.score >= 9,
top3=df.score >= 8,
top4=df.score >= 7
)

df.assign(**d).groupby(['company', 'month'])[[*d.keys()]].mean()

                top2  top3  top4
company month
AAA Nov'18 0.20 0.40 0.60
Oct'18 0.25 0.50 0.50
BBB Nov'18 0.25 0.25 0.25
Oct'18 0.00 0.25 0.25

关于python - 如何在 pandas groupby 中获得前 3 个框聚合 - 在 10 分制中得分大于 7 的百分比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53676095/

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