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
添加回答
举报