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))
我有一个 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))