在执行差异函数时如何仅在数据不为零或不考虑零后的第一个和最后一个值时执行

http://img1.mukewang.com/646c7abd000188ee06250284.jpg

我有一个数据框 X,它总是以零开始并以零结束,所以我在 sun 列上执行 .diff() 函数以获得当前间隔与其先前间隔的差异,当我这样做时我在数据框 Y 中以黄色标记的一天开始和一天结束时得到这个大值,我想看看如何计算与 3:30 时间戳的差异,以便我们得到一个数据框z 我们有零而不是 100 和 -142

呼如林
浏览 88回答 1
1回答

临摹微笑

如果有效数据范围内没有零:df.loc[~df['sun'].eq(0), 'sun'].diff().fillna(0).reindex(df.index, fill_value=0)输出:2020-07-20 03:05:00     0.02020-07-20 03:10:00     0.02020-07-20 03:15:00     0.02020-07-20 03:20:00     0.02020-07-20 03:25:00     0.02020-07-20 03:30:00    21.02020-07-20 03:35:00     1.02020-07-20 03:40:00    12.02020-07-20 03:45:00   -12.02020-07-20 03:50:00    20.02020-07-20 03:55:00     0.02020-07-20 04:00:00     0.02020-07-20 04:05:00     0.0Freq: 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)输出:                      sun2020-07-20 03:05:00   0.02020-07-20 03:10:00   0.02020-07-20 03:15:00   0.02020-07-20 03:20:00   0.02020-07-20 03:25:00   0.02020-07-20 03:30:00  21.02020-07-20 03:35:00   1.02020-07-20 03:40:00  12.02020-07-20 03:45:00 -12.02020-07-20 03:50:00  20.02020-07-20 03:55:00   0.02020-07-20 04:00:00   0.02020-07-20 04:05:00   0.0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python