我想使用pandas插值函数填充索引为日期时间的pandas系列的缺失值。
是否有一种方法可以仅在某些限制之间的间隙上应用插值函数?假设我们只想在小于datetime.timedelta(minutes = A)且大于datetime.timedelta(minutes = B)的间隙上使用它。
假设A = 30,B = 15,我们有了这个时间序列
2018-07-01 12:00:00 1
2018-07-01 12:05:00 nan
2018-07-01 12:10:00 3
2018-07-01 12:15:00 nan
2018-07-01 12:20:00 nan
2018-07-01 12:25:00 nan
2018-07-01 12:30:00 7
2018-07-01 12:35:00 8
2018-07-01 12:40:00 nan
2018-07-01 12:45:00 nan
2018-07-01 12:50:00 nan
2018-07-01 12:55:00 nan
2018-07-01 13:00:00 nan
2018-07-01 13:05:00 14
,我想拥有
2018-07-01 12:00:00 1
2018-07-01 12:05:00 nan
2018-07-01 12:10:00 3
2018-07-01 12:15:00 4
2018-07-01 12:20:00 5
2018-07-01 12:25:00 6
2018-07-01 12:30:00 7
2018-07-01 12:35:00 8
2018-07-01 12:40:00 nan
2018-07-01 12:45:00 nan
2018-07-01 12:50:00 nan
2018-07-01 12:55:00 nan
2018-07-01 13:00:00 nan
2018-07-01 13:05:00 14
就目前而言,我只找到了解决行数差距的解决方案...
谢谢!
答案 0 :(得分:0)
我不确定这在一般情况下如何运作,但是您可以尝试以下方法:
import pandas as pd
import numpy as np
df = pd.DataFrame({"date": pd.date_range(start="2018-07-01 12:00:00",
end="2018-07-01 13:05:00",
freq="5min")})
df["value"] = np.arange(1, len(df)+1)
df["value"] = np.where(df.index.isin([1, 3, 4, 5, 8, 9, 10, 11, 12]),
np.nan,
df["value"])
# Interpolation
df["value"] = np.where((df.date.dt.minute >=15) & (df.date.dt.minute <=30),
df.value.interpolate(),
df.value)