gpt4 book ai didi

python - 在pandas中,如何将groupby聚合的结果分配给原始df中的下一组?

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

使用 Pandas 我喜欢使用 groupby 和聚合函数,例如意思
然后将结果放回原始数据框中,但在 中下一个 组而不是组本身。如何以矢量化的方式做到这一点?
我有一个像这样的 Pandas 数据框:

data = {'Group': ['A','A','B','B','B','B', 'C','C', 'D','D'],
'Value': [1.1,1.3,9.1,9.2,9.5,9.4,6.2,6.4,2.2,2.3]
}

df = pd.DataFrame(data, columns = ['Group','Value'])

print (df)

Group Value
0 A 1.1
1 A 1.3
2 B 9.1
3 B 9.2
4 B 9.5
5 B 9.4
6 C 6.2
7 C 6.4
8 D 2.2
9 D 2.3
我喜欢得到这个,每个组都有前一组的平均值。
  Group  Value
0 A NaN
1 A NaN
2 B 1.2
3 B 1.2
4 B 1.2
5 B 1.2
6 C 9.3
7 C 9.3
8 D 6.3
9 D 6.3
我试过这个,但这是没有转移到下一组
df.groupby('Group')['Value'].transform('mean')

最佳答案

简单易用 map在 groupby 结果上:

df['Value'] = df['Group'].map(df.groupby('Group')['Value'].mean().shift()) 
df
Group Value
0 A NaN
1 A NaN
2 B 1.2
3 B 1.2
4 B 1.2
5 B 1.2
6 C 9.3
7 C 9.3
8 D 6.3
9 D 6.3

这个怎么运作
获取平均值
df.groupby('Group')['Value'].mean()

Group
A 1.20
B 9.30
C 6.30
D 2.25
Name: Value, dtype: float64
将其向下移动 1
df.groupby('Group')['Value'].mean().shift() 

Group
A NaN
B 1.2
C 9.3
D 6.3
Name: Value, dtype: float64
映射回来。
df['Group'].map(df.groupby('Group')['Value'].mean().shift())  

0 NaN
1 NaN
2 1.2
3 1.2
4 1.2
5 1.2
6 9.3
7 9.3
8 6.3
9 6.3
Name: Group, dtype: float64

关于python - 在pandas中,如何将groupby聚合的结果分配给原始df中的下一组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62607115/

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