繁体   English   中英

熊猫groupby和间隔内的累计总和

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM