我想計算 TimeStamp 差異,但內容有文本 NaN ,可以嗎?
源資料
TimeStamp
81 1285
82 1285
83 NaN
84 1287
85 1287
86 1287
87 NaN
88 1294
89 1294
90 1294
預期的
TimeStamp diff
81 1285 NaN
82 1285 0
83 NaN NaN
84 1287 NaN
85 1287 0
86 1287 0
87 NaN NaN
88 1294 NaN
89 1294 0
90 1294 0
我還有一個問題添加 ID 列,根據 ID 類別計算時差
源資料
TimeStamp ID
81 1285 0
82 1285 1
83 NaN 0
84 1287 1
85 1287 0
86 1287 1
87 NaN 0
88 1294 1
89 1294 0
90 1294 1
預期的
TimeStamp ID diff
81 1285 0 NaN
82 1285 1 NaN
83 NaN 0 NaN
84 1287 1 2
85 1287 0 NaN
86 1287 1 0
87 NaN 0 NaN
88 1294 1 7
89 1294 0 NaN
90 1294 1 0
uj5u.com熱心網友回復:
如果您的列或 NaN 是字串,只需轉換為浮點數:
df['diff'] = df['TimeStamp'].astype(float).diff()
輸出:
TimeStamp diff
81 1285 NaN
82 1285 0.0
83 NaN NaN
84 1287 NaN
85 1287 0.0
86 1287 0.0
87 NaN NaN
88 1294 NaN
89 1294 0.0
90 1294 0.0
uj5u.com熱心網友回復:
在結果系列中最終得到 NaN 的原因是具有未定義值的減法同樣是未定義的。由您決定如何處理。
如果你想用 替換原始系列中的所有 NaN 0,你可以這樣做
>>> s.fillna(0).diff()
81 NaN
82 0.0
83 -1285.0
84 1287.0
85 0.0
86 0.0
87 -1287.0
88 1294.0
89 0.0
90 0.0
Name: TimeStamp, dtype: float64
fillna回傳一個新系列,其中所有 NaN 都被替換為0.
uj5u.com熱心網友回復:
讓我們試試 groupby
df['new'] = df.groupby(df.TimeStamp.isna().cumsum())['TimeStamp'].diff()
df
TimeStamp new
81 1285.0 NaN
82 1285.0 0.0
83 NaN NaN
84 1287.0 NaN
85 1287.0 0.0
86 1287.0 0.0
87 NaN NaN
88 1294.0 NaN
89 1294.0 0.0
90 1294.0 0.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/371452.html
