【问题标题】:Resampling and computing mean in pandas dataframe熊猫数据框中的重采样和计算均值
【发布时间】:2021-12-23 23:31:22
【问题描述】:

我有一个带有 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 所示的结果。我希望将计算出的平均值放回未重新采样的原始数据帧中。如何获得?

提前致谢。

【问题讨论】:

  • 下面我的回答能满足你的需要吗?
  • @AndersKällmar,嘿,是的。对于上述问题,效果很好。但我也找到了另一种解决方案,即重采样和前向填充。
  • 我正在考虑该解决方案以及查看您上次的编辑,前向填充变体也快一点,但它真的很接近(只是做了一些测试)。

标签: python pandas dataframe time-series pandas-timeindex


【解决方案1】:

您可以使用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

【讨论】:

    猜你喜欢
    • 2020-05-14
    • 1970-01-01
    • 2018-10-26
    • 2021-06-03
    • 2018-03-26
    • 2020-03-03
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多