【发布时间】:2019-08-20 10:09:26
【问题描述】:
这里我有一个数据集,其中包含三个输入 x1、x2、x3 以及日期和时间。在我的 X3 列中,我的行中有类似的值。
我想要做的是当开始时间为 0 时,我想逐行查找相似值的时间差。
这里我使用了代码
df['time_diff']= pd.to_datetime(df['date'] + " " + df['time'],
format='%d/%m/%Y %H:%M:%S', dayfirst=True)
mask = df['x3'].ne(0)
df['Duration'] = df[mask].groupby(['date','x3'])['time_diff'].transform('first')
df['Duration'] = df['time_diff'].sub(df['Duration']).dt.total_seconds().div(3600)
这段代码给出了这个值。
date time x3 Expected output of time difference
10/3/2018 6:00:00 0 NaN
10/3/2018 7:00:00 5 0 =start time for 5
10/3/2018 8:00:00 0 NaN
10/3/2018 9:00:00 7 0=start time for 7
10/3/2018 10:00:00 0 NaN
10/3/2018 11:00:00 0 NaN
10/3/2018 12:00:00 0 NaN
10/3/2018 13:45:00 0 NaN
10/3/2018 15:00:00 0 NaN
10/3/2018 16:00:00 0 NaN
10/3/2018 17:00:00 0 NaN
10/3/2018 18:00:00 0 NaN
10/3/2018 19:00:00 5 12 hr =from starting time of 5
10/3/2018 20:00:00 0 NaN
10/3/2018 21:30:00 7 12.30hr = from starting time of 7
10/4/2018 6:00:00 0 NaN
10/4/2018 7:00:00 0 NaN
10/4/2018 8:00:00 5 0 = starting time of 5 because new day
10/4/2018 9:00:00 7 0 = starting time of 5 because new day
10/4/2018 11:00:00 5 3hr
10/4/2018 12:00:00 5 4hr
10/4/2018 13:00:00 5 5hr
10/4/2018 16:00:00 0 NaN
10/4/2018 17:00:00 0 NaN
10/4/2018 18:00:00 7 11hr
但我期望的输出是我想用时间均值逐步找到时间差:
date time x3 Expected for 5 (time_diff) Expected for 7(time_diff)
10/3/2018 6:00:00 0 NaN NaN
10/3/2018 7:00:00 5 0 =start time for 5 NaN
10/3/2018 8:00:00 0 1hr NaN
10/3/2018 9:00:00 7 1hr 0=start time for 7
10/3/2018 11:00:00 0 1hr 1hr
10/3/2018 12:00:00 0 1hr 1hr
10/3/2018 13:45:00 0 1.45hr 1.45hr
10/3/2018 15:00:00 0 1.15hr 1.15hr
10/3/2018 16:00:00 0 1hr 1hr
10/3/2018 17:00:00 0 1hr 1hr
10/3/2018 18:00:00 0 1hr 1hr
10/3/2018 19:00:00 5 0 hr =nextstartingtime5 1hr
10/3/2018 20:00:00 0 1hr 1hr
10/3/2018 21:30:00 7 1.5hr 0 =starting 7
10/4/2018 6:00:00 0 1hr 1hr
10/4/2018 7:00:00 0 1hr 1hr
10/4/2018 8:00:00 5 0 = startingbecausenewda 1hr
10/4/2018 9:00:00 7 1hr 0 =starting time for 7
10/4/2018 11:00:00 5 2hr 2hr
10/4/2018 12:00:00 5 1hr 1hr
【问题讨论】: