首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >累积频率列但在某种条件下重置

累积频率列但在某种条件下重置
EN

Stack Overflow用户
提问于 2022-02-08 23:09:15
回答 2查看 52关注 0票数 0

我有一个dataframe (在Python上),列中包含与特定订单相关联的时间和产品数量。

我创建了一个列,该列将时间间隔为30分钟(时间块),然后在该特定时间块(使用groupby)上计算产品数量。

现在,我想添加一个累积频率,在每一个块上重新启动。

在这个例子中,我的新列应该是2,3,3,5,7,.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-08 23:52:43

您可以这样计算每个组的累积和:

代码语言:javascript
运行
复制
df.groupby('Block of Time')['N Products'].cumsum()

其结果如下:

代码语言:javascript
运行
复制
0    2
1    3
2    3
3    5
4    7
Name: N Products, dtype: int64
票数 0
EN

Stack Overflow用户

发布于 2022-02-08 23:32:35

GroupBy.cumsum()可以实现数据帧内每个时间块的累积和。

代码语言:javascript
运行
复制
import pandas as pd
import numpy as np

df = pd.DataFrame({
         'N Products'       : [2, 1, 3, 5, 2],
         'Block of Time'    : ['12:30:00', '12:30:00', '13:30:00', '14:00:00', '14:00:00'],
         'Products on Block': [3, 3, 3, 7, 7],

})

print(df)
#   N Products    Block of Time      Products on Block
#0           2      12:30:00                  3
#1           1      12:30:00                  3
#2           3      13:30:00                  3
#3           5      14:00:00                  7
#4           2      14:00:00                  7

输出:

代码语言:javascript
运行
复制
df['Cumulative Products'] = df.groupby('Block of Time')['N Products'].cumsum()
print(df)
#    N Products   Block of Time      Products on Block   Cumulative Products
#0         2        12:30:00                  3                    2
#1         1        12:30:00                  3                    3
#2         3        13:30:00                  3                    3
#3         5        14:00:00                  7                    5
#4         2        14:00:00                  7                    7

民防部队阴谋:

代码语言:javascript
运行
复制
df['Cumulative Products'].hist(cumulative = True)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71042053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档