我只是希望将以下数据帧重新采样为 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
答案 0 :(得分:0)
本来是想问这个问题的,结果在搜索的时候找到了答案。想要的方法是 asfreq
方法,它:
返回新频率的值,本质上是重新索引。
这表明这种上采样基本上是一个重新索引。具体:
df.resample("10T").asfreq()
另一种可能是使用 reindex
,可以通过以下方式完成:
df.reindex(pd.date_range("11:00", "13:00", freq="10min"))
这两者都实现了所需的数据帧。