Оставшийся час в день для разницы между двумя временными метками с использованием панд - PullRequest
0 голосов
/ 02 апреля 2019

Я работаю над данными журнала, где мне приходилось ежедневно находить использование программного обеспечения. например, если для пользователя отображается журнал: время начала 01.04.2009, 9:15, время окончания, 04.03.2009, 12:00. Если я возьму разницу между этими двумя датами, то получу данные об использовании диапазона за определенный день. Есть ли способ, где я могу получить данные об использовании в день до даты окончания.

Данные будут иметь аналогичную форму, показанную ниже

enter image description here

и вот что я пытаюсь достичь

enter image description here

1 Ответ

0 голосов
/ 02 апреля 2019

Поскольку вы не предоставляете некоторые исходные данные, я сам создаю некоторые поддельные данные.Также я не уверен, что вы хотите сравнить 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...