1 回答

TA貢獻1982條經驗 獲得超2個贊
如果有效數據范圍內沒有零:
df.loc[~df['sun'].eq(0), 'sun'].diff().fillna(0).reindex(df.index, fill_value=0)
輸出:
2020-07-20 03:05:00 0.0
2020-07-20 03:10:00 0.0
2020-07-20 03:15:00 0.0
2020-07-20 03:20:00 0.0
2020-07-20 03:25:00 0.0
2020-07-20 03:30:00 21.0
2020-07-20 03:35:00 1.0
2020-07-20 03:40:00 12.0
2020-07-20 03:45:00 -12.0
2020-07-20 03:50:00 20.0
2020-07-20 03:55:00 0.0
2020-07-20 04:00:00 0.0
2020-07-20 04:05:00 0.0
Freq: 5T, Name: sun, dtype: float64
否則讓我們找到有效數據范圍的開始和結束:
s = df.where(df['sun'].ne(0))
idx_start = s.first_valid_index()
idx_end = s.last_valid_index()
df.loc[idx_start:idx_end].diff().fillna(0).reindex(df.index, fill_value=0)
輸出:
sun
2020-07-20 03:05:00 0.0
2020-07-20 03:10:00 0.0
2020-07-20 03:15:00 0.0
2020-07-20 03:20:00 0.0
2020-07-20 03:25:00 0.0
2020-07-20 03:30:00 21.0
2020-07-20 03:35:00 1.0
2020-07-20 03:40:00 12.0
2020-07-20 03:45:00 -12.0
2020-07-20 03:50:00 20.0
2020-07-20 03:55:00 0.0
2020-07-20 04:00:00 0.0
2020-07-20 04:05:00 0.0
添加回答
舉報