Python 3.x Python3日志文件在只有开始时间时计算结束时间列
这是一个有点难以解释,但我有一个日志文件与用户共享一个设备的不同开始时间。我试图添加一列,根据下一个人的开始时间计算结束时间。不确定这个概念叫什么,但看起来类似于python 3而不是sql 数据帧看起来像:Python 3.x Python3日志文件在只有开始时间时计算结束时间列,python-3.x,pandas,csv,Python 3.x,Pandas,Csv,这是一个有点难以解释,但我有一个日志文件与用户共享一个设备的不同开始时间。我试图添加一列,根据下一个人的开始时间计算结束时间。不确定这个概念叫什么,但看起来类似于python 3而不是sql 数据帧看起来像: Team Device_Num User Start_Time A 1234 Joe 1/18/2019 8:36 A 1234 Sue 1/18/2019 9:16 A
Team Device_Num User Start_Time
A 1234 Joe 1/18/2019 8:36
A 1234 Sue 1/18/2019 9:16
A 1234 Mary 2/1/2019 12:26
A 1234 Joe 2/1/2019 14:04
B 3333 Jerry 1/17/2019 20:27
C 5555 Bob 1/15/2019 3:08
C 5555 Tim 1/17/2019 19:58
C 4444 Tim 1/18/2019 07:35
尝试创建一个新列,该列根据其他列的唯一组合假定结束时间,有点像图书馆的书籍,以便:
End_Time
1/18/2019 9:15 #<-- Based on Sue's start time - 1 min
2/1/2019 12:25 #<-- Based on Mary's start time - 1 min
2/1/2019 14:03 #<-- Based on Joe's start time - 1 min
today() #<-- Joe still has it
today() #<-- Jerry still has it
1/17/2019 19:57 #<-- Based on Tim's start time - 1 min
today() #<-- Tim still has it
today() #<-- Tim has this unique device.
结束时间
2019年1月18日9:15#继续研究,并在一次手术中找到了答案:
对df进行排序,使设备数量递增,开始时间递增
# Lag (groupby/shift) function
df['End_Time'] = df.groupby(['Device_Num'])['Start_Time'].shift(-1)
# Alternative to take into account other columns.
df['End_Time'] = df.groupby(['Device_Num', 'Team'])['Start_Time'].shift(-1)
# Offset time by 1 minute
df['End_Time'] = df.End_Time - pd.DateOffset(minutes = 1)
# Fill in blanks with now()
df.End_Time.fillna(pd.datetime.now().strftime("%m/%d/%Y %I:%M"), inplace=True)
继续研究,并在一次操作中找到了答案:
对df进行排序,使设备数量递增,开始时间递增
# Lag (groupby/shift) function
df['End_Time'] = df.groupby(['Device_Num'])['Start_Time'].shift(-1)
# Alternative to take into account other columns.
df['End_Time'] = df.groupby(['Device_Num', 'Team'])['Start_Time'].shift(-1)
# Offset time by 1 minute
df['End_Time'] = df.End_Time - pd.DateOffset(minutes = 1)
# Fill in blanks with now()
df.End_Time.fillna(pd.datetime.now().strftime("%m/%d/%Y %I:%M"), inplace=True)