【发布时间】:2015-12-27 00:15:56
【问题描述】:
我有一个 pandas 数据框,其中包含不同时间尺度的信息,即在某些时期我每秒有 100 个数据点,而在其他时期我每分钟有 1 个数据点。
我的目标是在上采样时使用 last 进行正则化和下采样时使用固定时间窗口(例如:1 秒)重新采样此数据帧。
此外,我希望指定算法执行两个操作(下采样和上采样)的顺序,因为我需要先执行上采样(使用最后一个),然后才执行下采样(使用平均值)。
使用 pandas 重采样功能是否有可能?
例如,在下面的示例代码中,我希望在结果数据框中包含以下值:0.5(平均值)在 0 到 10 秒之间,0(最后)在 10 到 19 秒之间,10 在 19 到 39 之间秒。
import pandas as pd
import numpy as np
df1 = pd.DataFrame({'value' : np.repeat(1,10)}, index=pd.date_range('2010-01-01 00:00:00', periods=10, freq='1S'))
df2 = pd.DataFrame({'value' : np.repeat(0,10)}, index=pd.date_range('2010-01-01 00:00:00.5', periods=10, freq='1S'))
df3 = pd.DataFrame({'value' : np.repeat(10,3)}, index=pd.date_range('2010-01-01 00:00:19', periods=3, freq='10S'))
df = pd.concat([df1, df2, df3], axis=0)
df = df.sort_index()
df.resample(rule='1S', fill_method='ffill', kind='timestamp', how='mean')
你建议我如何解决这个问题?
编辑:我的真实数据框很大,因此我想尽量减少操作的数量,尤其是那些涉及对象复制的操作。
【问题讨论】: