行之间的Python熊猫日期差异

时间:2020-07-26 10:32:32

标签: python pandas dataframe timestamp date-difference

我有一个熊猫数据框“ A”,其中的“日期”列包含以下格式的时间戳:

2020-06-09 13:30:11.359497

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

4 个答案:

答案 0 :(得分:3)

创建一个颜色。例如'next':将存储第二天的时间,'diff':时间戳之间的时差

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

答案 1 :(得分:1)

您也可以在一行中执行此操作(实际上还有两行也在计算复制次数)

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

答案 2 :(得分:1)

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)

答案 3 :(得分:1)

使用熊猫函数:

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))