如何解决在执行diff函数时,如何仅在数据不为零时执行,或者不考虑零后的第一个和最后一个值 如果有效数据范围内没有零:否则,让我们找到有效数据范围的开始和结束:
我有一个数据框X,该数据框始终以零开头并以零结尾,因此我在sun列上执行了.diff()函数,以获取当前间隔与其之间的差上一个时间间隔,当我这样做时,我在数据帧Y中的一天开始和一天结束时获得了这个大值,并以黄色标记,我试图查看如何计算3:30时间与戳,以便得到一个数据帧z,其中的零而不是100和-142
解决方法
如果有效数据范围内没有零:
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。