gpt4 book ai didi

python - 在 groupby 内分组,然后取平均值

转载 作者:太空宇宙 更新时间:2023-11-03 10:49:03 25 4
gpt4 key购买 nike

假设我有一个如下所示的数据框(我将仅使用一个简单示例):

import pandas as pd

df = {'Col1':[3,4,2,6,5,7,3,4,9,7,1,3],
'Col2':['B','B','B','B','A','A','A','A','C','C','C','C',],
'Col3':[1,1,2,2,1,1,2,2,1,1,2,2]}

df = pd.DataFrame(df)

它给出了这样一个数据框:

    Col1 Col2  Col3
0 3 B 1
1 4 B 1
2 2 B 2
3 6 B 2
4 5 A 1
5 7 A 1
6 3 A 2
7 4 A 2
8 9 C 1
9 7 C 1
10 1 C 2
11 3 C 2

我要做的是几个步骤:

1) 对于 Col2 中的每个唯一值,以及 Col3 中的每个唯一值,平均 Col1。所以期望的输出是:

         Avg   Col2  Col3
1 3.5 B 1
2 4 B 2
3 6 A 1
4 3.5 A 2
5 8 C 1
6 2 C 2

2) 现在,对于 Col3 中的每个唯一值,我想要 Col2 中的最高平均值和对应值。所以

     Best Avg   Col2  Col3
1 8 C 1
2 4 B 2

我一直在尝试使用 df.groupby(['Col3','Col2'], as_index = False).agg({'Col1':'mean'}).groupby(['Col3'] ).agg({'Col1':'max'})

这为我提供了每个 Col3 值的最高平均值,但不是相应的 Col2 标签。感谢您提供的任何帮助!

最佳答案

在你第一次 groupby 之后做 sort_values + drop_duplicates

g1=df.groupby(['Col3','Col2'], as_index = False).agg({'Col1':'mean'})
g1.sort_values('Col1').drop_duplicates('Col3',keep='last')
Out[569]:
Col3 Col2 Col1
4 2 B 4.0
2 1 C 8.0

或者如果你有重复的均值最大值

g1[g1.Col1==g1.groupby('Col3').Col1.transform('max')]

关于python - 在 groupby 内分组,然后取平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54813305/

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