每天使用熊猫的两个小时之间的时差剩余时间

时间:2019-04-02 08:49:49

标签: python pandas date

我正在处理一个日志数据,我不得不每天查找该软件的使用情况。例如,如果日志显示给用户:开始时间04/01/2019 9:15 AM结束时间04/03/2019 12:00 PM。如果我在这两个日期之间取一个差值,那么我将获得该跨度的数据使用情况,而不是特定日期的数据使用情况。有没有一种方法可以让我获取直到结束日期的每天数据使用量。

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

enter image description here

这就是我要实现的目标

enter image description here

1 个答案:

答案 0 :(得分:0)

由于您没有提供某些原始数据,所以我自己创建了一些虚假数据。另外,我不确定您是否打算将描述中的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