【问题标题】:calculate time difference between different days计算不同日期之间的时间差
【发布时间】:2020-02-14 01:32:29
【问题描述】:

我目前正在编写用于分析应用使用统计数据的代码。数据集如下所示。

date         idx   AppName    EventType         EventTime 
2019-10-01  15835  clock    ACTIVITIY_RESUMED   15:30:02
2019-10-01  15836  clock    ACTIVITIY_PAUSED    15:30:15
2019-10-01  15837  gallery  ACTIVITY_RESUMED    15:31:42
.
. 

2019-10-02  16133  clock    ACTIVITY_RESUMED    16:40:30    

对于每个应用程序的使用,我编码如下,这很好用。 但是,这给出了涵盖数天的总体使用时间。我想计算每天的使用次数。提前致谢!

    app_names = df.AppName.unique()
    app_names = df.AppName.value_counts()
    app_usage_time = {}

for app in app_names: #
    app_resumed = False
    app_period = 0
    app_tmp_start = None
    for i, (index, data) in enumerate(df.iterrows()):
        if data.AppName == app: 
            if data.EventType == 'ACTIVITIY_RESUMED': 
                app_resumed = True
                app_tmp_start = data.datetime.timestamp()
            if (data.EventType == 'ACTIVITIY_PAUSED') and (app_tmp_start is not None):
                app_resumed = False
                app_period += data.datetime.timestamp() - app_tmp_start
                app_tmp_start = None

    app_usage_time[app] = app_period

【问题讨论】:

  • 你能分享一下你需要的输出吗?
  • 目前我的输出给出了例如 Instagram:204.0(秒),这是两天所用时间的总和。我想单独看看它,例如,像这样的东西。 10-01 Instagram:xx(秒),10-02 Instagram:xx(秒)
  • 要做到这一点,我想我应该对 datetime 库做点什么,但这似乎很复杂。

标签: python python-3.x pandas dataframe datetime


【解决方案1】:

您可以对datetime 对象使用加法和减法,如herehere 所示。

对于逐日评估,您可能必须先按日期拆分列表,然后计算所有单个活动的总和,每个活动由结束时间和开始时间的差值给出。

This discussionthis discussion 也可能对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-07
    • 2021-11-25
    • 2011-08-01
    • 1970-01-01
    • 2020-01-18
    • 2021-08-14
    • 1970-01-01
    相关资源
    最近更新 更多