首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫DateTime -系统DownTime

熊猫DateTime -系统DownTime
EN

Stack Overflow用户
提问于 2022-06-20 16:35:31
回答 1查看 35关注 0票数 0

我可以知道有什么更好的方法来获得系统停机期吗?

该系统将检测值并每20分钟传送一次读数。

此代码用于标识没有测量任何数据的0.00的类似数据。然而,我想知道它在这个连续的时间戳中丢失了多久的数据。就像一个例子,2:20,2,40,3:00am具有相同的值,因此总损失时间是1小时。数据文件中的启动时间,结束时间。请帮帮忙。

代码语言:javascript
复制
df_same_values = df.groupby((df['Water Quality Sensor'].shift() != df['Water Quality Sensor']).\
                  cumsum()).filter(lambda x: len(x) >= 3)
代码语言:javascript
复制
                  Water Quality Sensor
date                                     
2022-01-01 02:20:00              2.500000
2022-01-01 02:40:00              2.500000
2022-01-01 03:00:00              2.500000
2022-01-01 09:00:00              0.000000
2022-01-01 09:20:00              0.000000
2022-01-01 09:40:00              0.000000
2022-01-01 10:00:00              0.000000
2022-01-01 10:20:00              0.000000
2022-01-01 10:40:00              0.000000
2022-01-01 12:40:00              0.000000
2022-01-01 13:00:00              0.000000
2022-01-01 13:20:00              0.000000
2022-01-01 18:00:00              2.500000
2022-01-01 18:20:00              2.500000
2022-01-01 18:40:00              2.500000
2022-01-01 19:00:00              2.500000
2022-01-02 03:00:00              2.500000
2022-01-02 03:20:00              2.500000
2022-01-02 03:40:00              2.500000
2022-01-02 04:00:00              2.500000
2022-01-02 04:20:00              2.500000
2022-01-02 04:40:00              2.500000
2022-01-02 05:00:00              2.500000
2022-01-02 05:20:00              2.500000
2022-01-02 18:00:00              2.500000
2022-01-02 18:20:00              2.500000
2022-01-02 18:40:00              2.500000
2022-01-02 19:00:00              2.500000
2022-01-02 19:20:00              2.500000
EN

回答 1

Stack Overflow用户

发布于 2022-06-20 21:25:22

如果您的数据确实如此小,那么为什么不在记录适当值的同时遍历行呢?

代码语言:javascript
复制
down_flag = False
down_start = None
down_stop = None

for i, row in df.iterrows():
    if row['Water Quality Sensor'] == 0 and down_flag == False:
        down_flag = True
        down_start = row['date']
    if row['Water Quality Sensor'] > 0 and down_flag == True:
        down_flag = False
        down_stop = df.loc[i-1, 'date']

down_time = down_stop - down_start

print(down_time)

给出

代码语言:javascript
复制
0 days 04:20:00

如预期的那样。注意,如果有多个停机,这只记录停机的最后一部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72690249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档