使用Pandas中的线性插值比较时间序列与不同采样时间

时间:2018-03-20 15:14:09

标签: pandas time-series

背景: 我有一个月的实验数据。数据值在某种程度上定期进行,但没有均匀地分成一整天。因此,测量在午夜的第一天开始,但是在第一天的00:03开始,第二天的开始在00:07等。因此,每天所取的数据读数被移位。此外,读数之间的频率略有变化。在最后三天重复前三天的实验条件,以比较中间日的影响。

目标: 我想将重复的日子相互比较,并对它们进行区分。

问题: 应比较第1天和第25天,但相对的每日时间不对应,所以我想比较第一天的线性插值每天到第25天的数据点。即对于第25天的每个时间点(相对于一天的开始),我想从第一天减去相同的点。如果第一天没有对应点,我想使用最近点之间的线性插值。

到目前为止: 我有按行索引的Pandas Dataframes,列 time value ,两者都是Floats。我在 time 列上使用pandas.to_timedelta()创建了一个新列 delta 。我已经尝试减去第1天和第25天,但由于指数不对齐,我最终得到了许多NaN值。我也试过制作 delta 索引,但仍然无法弄清楚如何使计算正确。

1 个答案:

答案 0 :(得分:0)

我通过

解决了这个问题
  1. 将两个DataFrame的索引设置为因变量data.set_index( day_time )

  2. 创建两个DataFrame索引的并集combined_index = df1.index.union( df2.index )

  3. 使用组合索引df = df.reindex( combined_index )重新索引两个DataFrame

  4. 内插数据框df = df.interpolate( how = 'linear' )

  5. 这在两个DataFrame中创建了一组相互指数,允许使用算术运算符轻松进行比较。