计算列 python 中所有日期之间的时差
Calculate time difference between all dates in column python
我有一个看起来像这样的数据框:
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
我有一个看起来像这样的数据框:
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