【发布时间】:2019-11-11 15:36:00
【问题描述】:
如果有几个条件适用,则尝试计算行之间的时间差:
df['open_time'] = pd.to_datetime(df['open_time'], errors='coerce')
df['Time_diff'] = pd.to_datetime(df['Time_diff'], errors='coerce')
for i in range(1, len(df)):
if df.loc[i, 'JOB_ID'] == df.loc[i-1, 'JOB_ID'] and df.loc[i, 'STATION_IDX'] > df.loc[i-1, 'STATION_IDX']:
df['Time_diff'] = df.loc[i, 'open_time'] - df.loc[i-1, 'open_time']
open_time 是一天中的一个简单时间 HH:mm:ss 执行操作的时间,仅此而已...
原始数据集是:
JOB_ID DDMMYY STATION_IDX open_time
121663240 04-02-19 25 5:02:19
121663240 04-02-19 26 5:04:00
121663240 04-02-19 27 5:04:42
121651974 04-02-19 25 6:08:15
121651974 04-02-19 27 6:10:28
我不明白为什么我一直在 Time_diff 的所有行中得到“NaT”
JOB_ID Time_diff
0 121663240 NaT
1 121663240 NaT
2 121663240 NaT
3 121651974 NaT
4 121651974 NaT
5 121682840 NaT
6 121682840 NaT
我似乎无法在 Google 中找到任何适合我的计算行的答案。
对于上述数据集,我希望得到的预期结果是:
JOB_ID ddmmyy 25 to 26 26 to 27 25 to 27
121663240 04-02-2019 101 42 143
121651974 04-02-2019 NaN NaN 133
【问题讨论】:
-
您可以显示
Time_diff和JOB_ID。到那时还好。但是,如果您还显示open_time和STATION_IDX,您可以获得相关答案...
标签: python dataframe datetime date-arithmetic