Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Python3日志文件在只有开始时间时计算结束时间列_Python 3.x_Pandas_Csv - Fatal编程技术网

Python 3.x Python3日志文件在只有开始时间时计算结束时间列

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

这是一个有点难以解释,但我有一个日志文件与用户共享一个设备的不同开始时间。我试图添加一列,根据下一个人的开始时间计算结束时间。不确定这个概念叫什么,但看起来类似于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       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)