Pandas 上采样数据帧并用 NaN 填充

时间:2021-04-22 03:41:44

标签: python pandas

我只是希望将以下数据帧重新采样为 10 分钟而不是 30 分钟,并且不使用任何内容填充值。将它们保留为 NaN。

df = pd.DataFrame({"Col1": [10, 20, 15, 30, 45],
                  "Col2": [13, 23, 18, 33, 48],
                  "Col3": [17, 27, 22, 37, 52]},
                  index=pd.date_range("11:00", "13:00", freq="30min"))
df.resample("10T").bfill(limit=1)

几乎可以完成所需的操作,但该方法应该什么都不做并返回重新采样的数据帧,因此所需的数据帧如下:

                     Col1  Col2  Col3
2021-04-22 11:00:00  10.0  13.0  17.0
2021-04-22 11:10:00   NaN   NaN   NaN
2021-04-22 11:20:00   NaN   NaN   NaN
2021-04-22 11:30:00  20.0  23.0  27.0
2021-04-22 11:40:00   NaN   NaN   NaN
2021-04-22 11:50:00   NaN   NaN   NaN
2021-04-22 12:00:00  15.0  18.0  22.0
2021-04-22 12:10:00   NaN   NaN   NaN
2021-04-22 12:20:00   NaN   NaN   NaN
2021-04-22 12:30:00  30.0  33.0  37.0
2021-04-22 12:40:00   NaN   NaN   NaN
2021-04-22 12:50:00   NaN   NaN   NaN
2021-04-22 13:00:00  45.0  48.0  52.0

1 个答案:

答案 0 :(得分:0)

本来是想问这个问题的,结果在搜索的时候找到了答案。想要的方法是 asfreq 方法,它:

<块引用>

返回新频率的值,本质上是重新索引。

这表明这种上采样基本上是一个重新索引。具体:

df.resample("10T").asfreq()

另一种可能是使用 reindex,可以通过以下方式完成:

df.reindex(pd.date_range("11:00", "13:00", freq="10min"))

这两者都实现了所需的数据帧。