【问题标题】:Remaining Hour Per day for difference between two timestamp using pandas使用熊猫的两个时间戳之间的差异每天剩余小时
【发布时间】:2019-08-23 12:44:34
【问题描述】:

我正在处理日志数据,我必须在其中找到每天使用软件的情况。例如,如果日志显示用户:开始时间 04/01/2019 上午 9:15 结束时间 04/03/2019 下午 12:00。如果我在这两个日期之间有所不同,那么我将获得跨度而不是特定日期的数据使用情况。有没有一种方法可以让我在结束日期之前获得每天的数据使用量。

数据将具有如下所示的类似形式

这就是我想要实现的目标

【问题讨论】:

    标签: python pandas date


    【解决方案1】:

    由于您不提供一些原始数据,因此我自己创建了一些假数据。此外,我不确定您是否打算根据您的描述将Start dateEnd date 进行比较。如果我误解了你,请在下面发表评论。

    In [10]: import pandas as pd                                                                                                                                                                                                                  
    
    In [11]: import numpy as np                                                                                                                                                                                                                   
    
    In [12]: df1 = pd.DataFrame({"A":[1,2], "Start":[20190302, 20190401], "End": [20190304, 20190402]})                                                                                                                                           
    
    In [13]: df1                                                                                                                                                                                                                                  
    Out[13]: 
       A     Start       End
    0  1  20190302  20190304
    1  2  20190401  20190402
    
    In [14]: df2 = pd.DataFrame(df1.values.repeat((df1.End - df1.Start > 1) + 1, axis=0), columns=df1.columns)                                                                                                                                    
    
    In [15]: df2                                                                                                                                                                                                                                  
    Out[15]: 
       A     Start       End
    0  1  20190302  20190304
    1  1  20190302  20190304
    2  2  20190401  20190402
    

    如果您需要比较您的实际日期,您可能需要使用 datetime lib 之类的东西来做到这一点。表单示例:

    In [28]: import datetime                                                                                                                                                                                                                      
    
    In [29]: dt1 = datetime.datetime.strptime("11/30/2018 17:13", "%m/%d/%Y %H:%M")                                                                                                                                                               
    
    In [30]: dt1                                                                                                                                                                                                                                  
    Out[30]: datetime.datetime(2018, 11, 30, 17, 13)
    
    In [31]: dt2 = datetime.datetime.strptime("11/29/2018 17:13", "%m/%d/%Y %H:%M")                                                                                                                                                               
    
    In [32]: dt3 = datetime.datetime.strptime("11/28/2018 17:13", "%m/%d/%Y %H:%M")                                                                                                                                                               
    
    In [33]: dt1 - dt2                                                                                                                                                                                                                            
    Out[33]: datetime.timedelta(days=1)
    
    In [34]: (dt1 - dt2).days                                                                                                                                                                                                                     
    Out[34]: 1
    
    In [35]: (dt1 - dt3).days                                                                                                                                                                                                                     
    Out[35]: 2
    

    【讨论】:

    • 我正在处理日志数据,我必须在其中找到每天使用软件的情况。例如,如果日志显示用户:开始时间 04/01/2019 上午 9:15 结束时间 04/03/2019 下午 12:00。如果我在这两个日期之间有所不同,那么我将获得跨度而不是特定日期的数据使用情况。有没有一种方法可以让我在结束日期之前获得每天的数据使用量。如果您需要任何进一步的说明,请告诉我。感谢您的帮助
    • 您的问题似乎与您的评论相去甚远!无论如何,您可能想尝试使用 ELK。
    猜你喜欢
    • 2018-07-25
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 2020-11-25
    • 2017-11-18
    • 1970-01-01
    相关资源
    最近更新 更多