首页 > 解决方案 > 循环一段时间后重新计算拟合参数

问题描述

我有一个类似于下面显示的数据框,我想知道如何在每设定天数循环并计算拟合参数。例如,我希望能够输入 30 天,并且能够获得前 30 天的新常量,然后是前 60 天,依此类推,直到日期范围结束。

ID    date     amount delta_t
1   2020/1/1    10.2     0
1   2020/1/2    11.2     1
2   2020/1/1    12.3     0
2   2020/1/2    13.3     1

我希望将参数存储在另一个数据帧中,这是我目前对整个数据集所做的,但这是在整个时间段而不是 n 天块。然后使用每个设定周期的常数计算图表点并绘制它们。

现在我正在使用 groupby 按 ID 对井进行分组,然后使用 apply 方法计算每个 ID 的常数。这适用于整个数据框,但如果我只使用 30 天的周期,常量将会改变。

我不知道在 apply 方法中是否有一种方法可以更轻松地执行此操作并将常量输出到新列或每个 ID 一行的单独数据帧。非常感谢任何输入。

def parameters(x):
        variables, _ = curve_fit(expo, x['delta_t'], x['amount'])
        return pd.Series({'param1': variables[0], 'param2': variables[1], 'param3': variables[2]})
param_series = df_filt.groupby('ID').apply(parameters)

标签: pythonpandasfor-loopapplycurve-fitting

解决方案


推荐阅读