1 回答
TA贡献1871条经验 获得超13个赞
不会丢失数据的真实性resample()
已经重新创建了一个示例数据集,我在其中以128 秒的间隔模拟了源数据
然后
resample()
到512s桶这可能意味着存在空桶,其中最后一个为NaN并且基础值列表为空
你需要决定在这些情况下你想做什么。对于我对温度数据进行上采样的情况,我的
dropna()
其他选择显然是fillna()
由于存在NaN您应该考虑
dfr = df.resample("512s")["val"].agg(last="last", vals=lambda s: list(s)).astype({"last":"Int64"})
维护列的数据类型(即从int64更改为float64)
总之,源数据的完整性没有损失。您需要决定如何处理没有适合 *bin* 的基础数据的情况
d = [d for d in pd.date_range(dt.datetime(2019,5,1,2),
dt.datetime(2019,5,1,4), freq="128s")
if random.randint(0,3) < 2 ] # miss some sample times... so resampling will give NaNs
df = pd.DataFrame({"ts":d, "val":[random.randint(0,50) for x in d]}).set_index("ts")
dfr = df.resample("512s")["val"].agg(last="last", vals=lambda s: list(s))
dfr
输出
last vals
ts
2019-05-01 01:59:28 27.0 [1, 41, 27]
2019-05-01 02:08:00 48.0 [14, 14, 48]
2019-05-01 02:16:32 43.0 [2, 49, 43]
2019-05-01 02:25:04 43.0 [43]
2019-05-01 02:33:36 44.0 [44]
2019-05-01 02:42:08 38.0 [39, 38]
2019-05-01 02:50:40 37.0 [37]
2019-05-01 02:59:12 25.0 [39, 25]
2019-05-01 03:07:44 1.0 [29, 8, 1]
2019-05-01 03:16:16 35.0 [12, 20, 35]
2019-05-01 03:24:48 33.0 [20, 33]
2019-05-01 03:33:20 5.0 [11, 5]
2019-05-01 03:41:52 NaN []
2019-05-01 03:50:24 9.0 [9]
添加回答
举报