Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
计算python列中所有日期之间的时间差_Python_Performance_Dataframe_Time_Diff - Fatal编程技术网

计算python列中所有日期之间的时间差

计算python列中所有日期之间的时间差,python,performance,dataframe,time,diff,Python,Performance,Dataframe,Time,Diff,我有一个看起来像这样的数据框: 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

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

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)
这需要永远运行,我正在寻找一种更省时的方法来获得所需的输出。
有什么想法吗?

首先尝试对日期进行排序。然后减去这两个级数:

dates = dates.sort_values()
pd.Series.subtract(dates[0:-1], dates[1:-1])
在每次迭代中使用min函数两次,这是无效的。 希望这有帮助。

试试这个:

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

非常感谢。我试过了,但不幸的是,我得到了整个团队的0天00:00:00。有什么问题?