[英]Pandas groupby and cumulative sum over interval
我有一个像这样的数据框:
Name Values
0 A 1
1 A 2
2 A 3
3 B 1
4 B 2
5 C 3
6 A 2
7 A 6
8 B 8
9 B 3
是否可以在某个时间间隔内进行分组和累积总和?
例如,如果我以3的间隔获取累积总和,它将看起来像这样:
Name Values cum_sum_interval_3
0 A 1 2.00
1 A 2 2.00
2 A 3 2.00
3 B 1 3.67
4 B 2 3.67
5 C 3 3.00
6 A 2 4.00
7 A 6 4.00
8 B 8 3.67
9 B 3 3.00
在这里,我一次完成了3个值的平均值(groupby之后)
您可以这样做:
df['cum_sum_interval_3'] = df.groupby([df.Name, df.groupby('Name')['Values'].cumcount() // 3])['Values'].transform('mean')
或者,如果您更喜欢分步进行:
df['name_idx'] = df.groupby('Name')['Values'].cumcount() // 3
df['cum_sum_interval_3'] = df.groupby(['Name', 'name_idx'])['Values'].transform('mean')
result = df.drop('name_idx', axis=1)
print(result)
输出量
Name Values cum_sum_interval_3
0 A 1 2.000000
1 A 2 2.000000
2 A 3 2.000000
3 B 1 3.666667
4 B 2 3.666667
5 C 3 3.000000
6 A 2 4.000000
7 A 6 4.000000
8 B 8 3.666667
9 B 3 3.000000
该声明:
df.groupby('Name')['Values'].cumcount() // 3
在每个组内创建大小约为3的组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.