Python 3 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       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.

不确定在编码上从哪里开始,请始终感谢帮助。

继续对其进行处理,并在集体比/申请(shift)操作下找到答案:

对DF进行排序,以便device_num正在上升,并且start_time正在上升。

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

最新更新