【发布时间】:2019-08-23 12:44:34
【问题描述】:
我正在处理日志数据,我必须在其中找到每天使用软件的情况。例如,如果日志显示用户:开始时间 04/01/2019 上午 9:15 结束时间 04/03/2019 下午 12:00。如果我在这两个日期之间有所不同,那么我将获得跨度而不是特定日期的数据使用情况。有没有一种方法可以让我在结束日期之前获得每天的数据使用量。
数据将具有如下所示的类似形式
这就是我想要实现的目标
【问题讨论】:
我正在处理日志数据,我必须在其中找到每天使用软件的情况。例如,如果日志显示用户:开始时间 04/01/2019 上午 9:15 结束时间 04/03/2019 下午 12:00。如果我在这两个日期之间有所不同,那么我将获得跨度而不是特定日期的数据使用情况。有没有一种方法可以让我在结束日期之前获得每天的数据使用量。
数据将具有如下所示的类似形式
这就是我想要实现的目标
【问题讨论】:
由于您不提供一些原始数据,因此我自己创建了一些假数据。此外,我不确定您是否打算根据您的描述将Start date 与End 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
【讨论】: