Python pandas 行之间的日期差异

Python pandas date difference between rows

我有一个 pandas 数据框 'A',其列 'date' 包含以下格式的时间戳:

2020-06-09 13:30:11.359497

我需要计算每行与上一行之间的时间差(以分钟为单位)。 我试过 Timedelta、shift 和 diff。

创建一列。例如。 'next':将存储第二天的时间和'diff':时间戳之间的差异

df['next']=df['A'].shift(periods =1 ,  fill_value=0)
df['diff']=df['A']-df['next']

您也可以在一行中执行此操作(实际上两个也算复制)

df["diff"] = df.Dates
df["diff"] = df.Dates.shift(periods=-1)- df.Dates
from datetime import datetime

import time

t1 = '09/06/2020 13:30:11.359497'

t2 = '10/06/2020 09:30:12.352452'

# convert t1, t2 to type datetime

date_time_t1 = datetime.strptime(t1, '%d/%m/%Y %H:%M:%S.%f')

date_time_t2 = datetime.strptime(t2, '%d/%m/%Y %H:%M:%S.%f')

# convert date_time_t1, date_time_t2 to Unix timestamp
timestamp_1 = time.mktime(date_time_t1.timetuple())

timestamp_2 = time.mktime(date_time_t2.timetuple())

# the difference in minutes
print(int(timestamp_2 - timestamp_1) / 60)

使用 pandas 函数:

df['next'] = df.Col1.shift(periods=-1, fill_value=0)
df['diff'] = (df.next - df.Col1)/np.timedelta64(1,'m') # converting to minutes, np is numpy module

使用用户定义的函数(可以有更多的控制,您可以根据需要进行更改):

def find_diff(date_list):
    dif_list = []
    for x, y in zip(date_list, date_list[1:]):
        dif_list.append((y-x).total_seconds()/60)
     return pd.Series(dif_list)

df['diff'] = find_diff(list(df.Col1))