gpt4 book ai didi

python - 查找最近 30 分钟内 DataFrame 中的元素数

转载 作者:行者123 更新时间:2023-12-05 04:33:20 27 4
gpt4 key购买 nike

我有一个数据框,其中包含特定时间戳、特定事件的项目数。

matrix = pd.DataFrame()
matrix['Timestamp'] = [Timestamp('2019-12-01 11:25:32.060000'),
Timestamp('2019-12-01 15:24:38.527000'),
Timestamp('2019-12-02 17:09:57.907000'),
Timestamp('2019-12-02 18:06:38.883000'),
Timestamp('2019-12-02 19:16:43.667000'),
Timestamp('2019-12-03 20:59:10.727000')]
matrix['N° Items'] = [1,2,1,4,5,7]
matrix

enter image description here

我想为每一行计算过去 30 分钟内项目数的总和。我用以下方法解决了这个问题:

def in_Range(delta):
seconds = delta.total_seconds()
return (seconds>0) and (seconds<60*30)

def func(ts):
return matrix[(ts-matrix['Timestamp']).apply(in_Range)]['N° Items'].sum()

matrix['N° Items Last 30 Minutes'] = matrix['Timestamp'].apply(func)

我想知道是否有其他(希望更好)方法可以解决这个问题。这个解决方案非常慢(即使使用多处理)而且我的真实数据帧很大。

最佳答案

DataFrame.rolling是你要找的。该函数仅在数据框的索引是时间戳系列时才有效:

result = (
matrix.set_index("Timestamp")
.assign(**{
"N° Items Last 30 Minutes": lambda x: x["N° Items"].rolling("30T").sum() - x["N° Items"]
})
)

关于python - 查找最近 30 分钟内 DataFrame 中的元素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71461179/

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