【问题标题】:Calculate time difference between all dates in column python计算python列中所有日期之间的时间差
【发布时间】:2019-12-01 16:14:42
【问题描述】:

我有一个看起来像这样的数据框:

group        date            value
 g_1  1/2/2019 11:03:00        3
 g_1  1/2/2019 11:04:00        5
 g_1  1/2/2019 10:03:32        100
 g_2  4/3/2019 09:11:09        46

我想计算每组出现之间的时间差(以秒为单位)。

示例输出:

groups_time_diff = {'g_1': [23,5666,7878], 'g_2: [0.2,56,2343] ,...}

这是我的代码:

groups_time_diff = defaultdict(list)
for group in tqdm(groups):
    group_df = unit_df[unit_df['group'] == group]    
    dates = list(group_df['time'])
    while len(dates) != 0:
        min_date = min(dates)
        dates.remove(min_date)
        if len(dates) > 0:
            second_min_date = min(dates)
            date_diff = second_min_date - min_date
            groups_time_diff[group].append(date_diff.seconds)

这需要很长时间才能运行,我正在寻找一种更省时的方法来获得所需的输出。 有什么想法吗?

【问题讨论】:

    标签: python performance dataframe time diff


    【解决方案1】:

    试试这个:

    sorted_group_df = group_df.sort_values(by='time',ascending=True)
    dates = sorted_group_df['time']
    one = dates[1:-1].reset_index(drop=True)
    two = dates[0:-1].reset_index(drop=True)
    date_difference = one - two
    date_difference_in_seconds = date_difference.dt.seconds
    

    【讨论】:

      【解决方案2】:

      首先尝试对您的日期进行排序。然后减去这两个系列:

      dates = dates.sort_values()
      pd.Series.subtract(dates[0:-1], dates[1:-1])
      

      您在每次迭代中使用 min 函数两次,效率不高。 希望这会有所帮助。

      【讨论】:

      • 谢谢。我已经尝试过了,但不幸的是,我为整个团队获得了 0 天 00:00:00。有什么问题?
      猜你喜欢
      • 1970-01-01
      • 2021-08-14
      • 2010-11-07
      • 2020-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多