pandas - Python Pandas fillna 与 timedelta

标签 pandas time-series nan

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 值,以便在 00:21:00 列 value_a 中 NaN 保留,而 value_a 和 value_b 的其他 NaN 消失。

最佳答案

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

#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

或者可能需要转换 + 填充:

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

关于pandas - Python Pandas fillna 与 timedelta,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43977728/

相关文章:

python - 纠正时间序列中的时钟漂移

r - 如何绘制时间序列的互相关矩阵?

c# - NaN 对 double 意味着什么?

python - pandas系列如何用最后一个有效值填充na

python - numpy.polyfit 不处理 NaN 值

python - 根据另一个 df 中的列计算一个 df 中的行数

python - 按日期统计组数

python - 如何按 Python (pandas) 中列中的出现次数对 Dataframe 进行排序

python - 将 Pandas 数据框与 csv 文件进行比较的最佳方法

r - R HTS 包中的 Combinef - 原始级别名称丢失