Python Pandas 用 timedelta 填充

Python Pandas fillna with timedelta

pandas 数据框的标准 fillna 方法允许限制矩阵中接下来的 k 个条目。现在我不想通过条目数来限制它,而是在某个时间段内(我的索引是 DatetimeIndex)。我的想法是这些值有一种衰减,所以我想前向填充值而不是 NA 比方说半小时,但不会更远。我该如何解决?

index                  value_a   value_b    diff
2016-01-01 00:01:00      2.8       NaN       NaN
2016-01-01 00:06:00      2.8       5.4      -2.6
2016-01-01 00:11:00      NaN       5.4       NaN
2016-01-01 00:16:00      NaN       NaN       NaN
2016-01-01 00:21:00      NaN       5.4       NaN

在那个例子中,我例如想在未来仅 14 分钟后替换 NaN 值,以便在 value_a 列中的 00:21:00 保留 NaN,而 value_a 和 value_b 的其他 NaN 消失.

如果是上采样,您可以使用 resample + transform 并聚合 first:

#for testing 10Min
df = df.resample('10Min').transform('first')
print (df)
                     value_a  value_b  diff
index                                      
2016-01-01 00:01:00      2.8      5.4  -2.6
2016-01-01 00:06:00      2.8      5.4  -2.6
2016-01-01 00:11:00      NaN      5.4   NaN
2016-01-01 00:16:00      NaN      5.4   NaN
2016-01-01 00:21:00      NaN      5.4   NaN

或者可能需要 transform + ffill:

df = df.resample('10T').transform('ffill')
print (df)
                     value_a  value_b  diff
index                                      
2016-01-01 00:01:00      2.8      NaN   NaN
2016-01-01 00:06:00      2.8      NaN   NaN
2016-01-01 00:11:00      2.8      5.4  -2.6
2016-01-01 00:16:00      2.8      5.4  -2.6
2016-01-01 00:21:00      NaN      5.4   NaN