gpt4 book ai didi

python - 2 groupby 在同一个数据框中,可能吗?

转载 作者:行者123 更新时间:2023-11-30 22:24:55 25 4
gpt4 key购买 nike

我想要以下 df,制作一个 df = df.groupby(['id','quarter'])['jobs].mean() 但同时数据框必须具有另一列中按 ID 和年份列出的职位的平均值。

 id    year   quarter    month    jobs
1 2007 1 1 10
1 2007 1 2 12
1 2007 1 3 12
1 2007 2 4 12
1 2007 2 5 12
1 2007 2 6 13
1 2007 3 7 14
1 2007 3 8 9
1 2007 3 9 12
1 2007 4 10 15
1 2007 4 12 18
2 2007 1 1 15
2 2007 1 2 15
2 2007 1 3 16
2 2007 2 4 17
2 2007 2 5 18
2 2007 2 6 10
2 2007 3 7 12
2 2007 3 8 12
2 2007 3 9 12
2 2007 4 10 12
2 2007 4 11 13
2 2007 4 12 14

结果应该是这样的

 id    year   quarter         jobs         jobs_year
1 2007 1 (mean quarter) (mean year)
1 2007 2 (mean quarter) (mean year)
1 2007 3 (mean quarter) (mean year)
1 2007 4 (mean quarter) (mean year)
2 2007 1 (mean quarter) (mean year)
2 2007 2 (mean quarter) (mean year)
2 2007 3 (mean quarter) (mean year)
2 2007 4 (mean quarter) (mean year)

最佳答案

使用transform然后drop_duplicates

df['jobs1']=df.groupby(['id','quarter'])['jobs'].transform('mean')
df['jobs_year']=df.groupby(['id','year'])['jobs'].transform('mean')
df=df.drop_duplicates(['id','year','quarter'])
df
Out[305]:
id year quarter month jobs jobs1 jobs_year
0 1 2007 1 1 10 11.333333 12.636364
3 1 2007 2 4 12 12.333333 12.636364
6 1 2007 3 7 14 11.666667 12.636364
9 1 2007 4 10 15 16.500000 12.636364
11 2 2007 1 1 15 15.333333 13.833333
14 2 2007 2 4 17 15.000000 13.833333
17 2 2007 3 7 12 12.000000 13.833333
20 2 2007 4 10 12 13.000000 13.833333

关于python - 2 groupby 在同一个数据框中,可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47703374/

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