Python 如何设置时间差的最小值?

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

如果出发时间和到达时间之间的时差小于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: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