1 回答

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
不會(huì)丟失數(shù)據(jù)的真實(shí)性resample()
已經(jīng)重新創(chuàng)建了一個(gè)示例數(shù)據(jù)集,我在其中以128 秒的間隔模擬了源數(shù)據(jù)
然后
resample()
到512s桶這可能意味著存在空桶,其中最后一個(gè)為NaN并且基礎(chǔ)值列表為空
你需要決定在這些情況下你想做什么。對(duì)于我對(duì)溫度數(shù)據(jù)進(jìn)行上采樣的情況,我的
dropna()
其他選擇顯然是fillna()
由于存在NaN您應(yīng)該考慮
dfr = df.resample("512s")["val"].agg(last="last", vals=lambda s: list(s)).astype({"last":"Int64"})
維護(hù)列的數(shù)據(jù)類型(即從int64更改為float64)
總之,源數(shù)據(jù)的完整性沒有損失。您需要決定如何處理沒有適合 *bin* 的基礎(chǔ)數(shù)據(jù)的情況
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]
添加回答
舉報(bào)