0

我有一个带有 1 列和基于时间的索引的 pandas 数据框。我想每两秒重新采样一次数据并计算列中值的平均值。这是一个例子:

index = pd.date_range('1/1/2000', periods=10, freq='S')
data = {'value':[23,23,12,14,14,57,67,32,56,89]}
series = pd.DataFrame(data, index=index)

上面的代码给出了这个结果。

在此处输入图像描述

现在,我计算每两秒的平均值。

series['resample_value'] = 
series['value'].resample('2S').mean()

这给了我如下图所示的结果。

在此处输入图像描述

但我希望得到如图 3 所示的结果。我希望将计算出的平均值放回未重新采样的原始数据帧中。我如何获得它?

在此处输入图像描述

提前致谢。

4

1 回答 1

0

您可以使用 对重新采样的值进行floor分组,然后计算每个组的平均值并使用以下方法将其广播到原始行transform

series['value'] = series.groupby(series.index.floor('2S')).value.transform('mean')

print(series)

                        value
2000-01-01 00:00:00      23.0
2000-01-01 00:00:01      23.0
2000-01-01 00:00:02      13.0
2000-01-01 00:00:03      13.0
2000-01-01 00:00:04      35.5
2000-01-01 00:00:05      35.5
2000-01-01 00:00:06      49.5
2000-01-01 00:00:07      49.5
2000-01-01 00:00:08      72.5
2000-01-01 00:00:09      72.5
于 2021-11-11T14:42:22.533 回答