gpt4 book ai didi

pandas - 使用时间索引在 pandas 数据帧上滚动积分

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

我想用时间索引捕获数据框列的积分。这适用于每个时间间隔发生的分组。

from scipy import integrate
>>> df

Time A
2017-12-18 19:54:40 -50187.0
2017-12-18 19:54:45 -60890.5
2017-12-18 19:54:50 -28258.5
2017-12-18 19:54:55 -8151.0
2017-12-18 19:55:00 -9108.5
2017-12-18 19:55:05 -12047.0
2017-12-18 19:55:10 -19418.0
2017-12-18 19:55:15 -50686.0
2017-12-18 19:55:20 -57159.0
2017-12-18 19:55:25 -42847.0

>>> integral_df = df.groupby(pd.Grouper(freq='25S')).apply(integrate.trapz)

Time A
2017-12-18 19:54:35 -118318.00
2017-12-18 19:55:00 -115284.75
2017-12-18 19:55:25 0.00
Freq: 25S, Name: A, dtype: float64

编辑:

scipy 积分函数自动使用时间索引来计算它的结果。

这不是真的。您必须显式地将转换传递给 np datetime,以便 scipy.integrate.trapz 正确使用时间进行整合。请参阅我对这个问题的评论。

但是,我想改用滚动积分。我试过了 Using rolling functions found on SO , 但是当我尝试对集成函数进行输入时,代码变得困惑,因为这些滚动函数不返回数据帧。

如何对我的数据框列之一的函数进行随时间的滚动积分?

最佳答案

将时间设置为索引,并使用 df.rolling

df.Time = pd.to_datetime(df.Time)
df = df.set_index('Time')
df.rolling('25S').apply(integrate.trapz)

#outputs:

2017-12-18 19:54:40 0.00
2017-12-18 19:54:45 -55538.75
2017-12-18 19:54:50 -100113.25
2017-12-18 19:54:55 -118318.00
2017-12-18 19:55:00 -126947.75
2017-12-18 19:55:05 -81986.75
2017-12-18 19:55:10 -53144.75
2017-12-18 19:55:15 -69992.00
2017-12-18 19:55:20 -115284.75
2017-12-18 19:55:25 -154710.00

这是 AA-rolling-integrated 的图:

A & A rolling integrated with window 25s

关于pandas - 使用时间索引在 pandas 数据帧上滚动积分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51270262/

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