Python 如何设置时间差的最小值?
如果出发时间和到达时间之间的时差小于30分钟或为负,如何假定该值为30 例如,我有以下数据类型:Python 如何设置时间差的最小值?,python,pandas,datetime,Python,Pandas,Datetime,如果出发时间和到达时间之间的时差小于30分钟或为负,如何假定该值为30 例如,我有以下数据类型: id departure time arrival time start end capacity Train A 2016-05-19 01:45:00 2016-05-19 08:25:00 A G 2 Train A 2016-05-19 16:54:00 2016-05-19 16
id departure time arrival time start end capacity
Train A 2016-05-19 01:45:00 2016-05-19 08:25:00 A G 2
Train A 2016-05-19 16:54:00 2016-05-19 16:00:00 B H 2
Train A 2016-05-19 21:25:00 2016-05-20 07:25:00 C I 3
Train B 2016-05-24 02:20:00 2016-05-24 12:50:00 D J 3
Train B 2016-05-24 18:30:00 2016-05-25 20:00:00 E K 2
Train B 2016-05-26 19:35:00 2016-05-26 19:45:00 F L 3
我使用下面的公式来计算时间差
df['time difference'] = ((df['departure time'] - df['arrival time']).abs())
我想将时间差的最小值设置为30,)如果该值小于30或为负)您可以将列减去并转换为分钟,然后先除以
60
,然后将其替换为30:
diff=(df[‘出发时间’]-df[‘到达时间’).dt.总秒数()/60
df[‘时差’]=差异掩码(差异<30,30)
打印(df)
id发车时间到达时间起始结束容量\
列车A 2016-05-19 01:45:00 2016-05-19 08:25:00 A G 2
列车A 2016-05-19 16:54:00 2016-05-19 16:00:00 B H 2
列车A 2016-05-19 21:25:00 2016-05-20 07:25:00 C I 3
列车B 2016-05-2402:20:00 2016-05-2412:50:00D J 3
列车B 2016-05-2418:30:002016-05-2520:00:00E K 2
列车B 2016-05-26 19:35:00 2016-05-26 19:45:00 F L3
时差
0 30.0
1 54.0
2 30.0
3 30.0
4 30.0
5 30.0
你为什么要做groupby?删除了它!!!!!你好我几乎没有给出负时差的数据。在这种情况下,不会存储任何值。你知道如何用30分钟替换空值吗??非常感谢。负值是由于数据中的微小错误(虽然时间上不可能出现负差异)造成的。我在差异中有空值,我认为这可能是因为负值。我将检查此空值是否有任何其他原因尝试检查具有差异的新列。@jezrael问题已解决!它起作用了!谢谢你^^
diff = (df['departure time'] - df['arrival time']).dt.total_seconds() / 60
df['time difference'] = diff.mask(diff < 30, 30)
print (df)
id departure time arrival time start end capacity \
0 Train A 2016-05-19 01:45:00 2016-05-19 08:25:00 A G 2
1 Train A 2016-05-19 16:54:00 2016-05-19 16:00:00 B H 2
2 Train A 2016-05-19 21:25:00 2016-05-20 07:25:00 C I 3
3 Train B 2016-05-24 02:20:00 2016-05-24 12:50:00 D J 3
4 Train B 2016-05-24 18:30:00 2016-05-25 20:00:00 E K 2
5 Train B 2016-05-26 19:35:00 2016-05-26 19:45:00 F L 3
time difference
0 30.0
1 54.0
2 30.0
3 30.0
4 30.0
5 30.0