Pandas:如何计算两个时间之间的差异


您可以使用以下语法来计算 pandas DataFrame 中两个时间之间的差异:

 #calculate time difference in hours
df[' hours_diff '] = (df. end_time - df. start_time ) / pd. Timedelta (hours= 1 )

#calculate time difference in minutes
df[' min_diff '] = (df. end_time - df. start_time ) / pd. Timedelta (minutes= 1 )

#calculate time difference in seconds
df[' sec_diff '] = (df. end_time - df. start_time ) / pd. Timedelta (seconds= 1 )

此特定示例计算某些 Pandas DataFrame 的end_timestart_time列中的时间差。

以下示例展示了如何在实践中使用此语法。

示例:计算 pandas 中两个时间之间的差异

假设我们有以下 pandas DataFrame:

 import pandas as pd

#createDataFrame
df=pd. DataFrame ({' start_time ':pd. date_range (start=' 5/25/2020 ', periods= 6 , freq=' 15min '),
                 ' end_time ':pd. date_range (start=' 5/26/2020 ', periods= 6 , freq=' 30min ')})

#view DataFrame
print (df)

           start_time end_time
0 2020-05-25 00:00:00 2020-05-26 00:00:00
1 2020-05-25 00:15:00 2020-05-26 00:30:00
2 2020-05-25 00:30:00 2020-05-26 01:00:00
3 2020-05-25 00:45:00 2020-05-26 01:30:00
4 2020-05-25 01:00:00 2020-05-26 02:00:00
5 2020-05-25 01:15:00 2020-05-26 02:30:00

我们可以使用以下语法来计算start_timeend_time列之间的时、分、秒的时间差:

 #calculate time difference in hours
df[' hours_diff '] = (df. end_time - df. start_time ) / pd. Timedelta (hours= 1 )

#calculate time difference in minutes
df[' min_diff '] = (df. end_time - df. start_time ) / pd. Timedelta (minutes= 1 )

#calculate time difference in seconds
df[' sec_diff '] = (df. end_time - df. start_time ) / pd. Timedelta (seconds= 1 )

#view updated DataFrame
print (df)

           start_time end_time hours_diff min_diff sec_diff
0 2020-05-25 00:00:00 2020-05-26 00:00:00 24.00 1440.0 86400.0
1 2020-05-25 00:15:00 2020-05-26 00:30:00 24.25 1455.0 87300.0
2 2020-05-25 00:30:00 2020-05-26 01:00:00 24.50 1470.0 88200.0
3 2020-05-25 00:45:00 2020-05-26 01:30:00 24.75 1485.0 89100.0
4 2020-05-25 01:00:00 2020-05-26 02:00:00 25.00 1500.0 90000.0
5 2020-05-25 01:15:00 2020-05-26 02:30:00 25.25 1515.0 90900.0

新列包含不同单位的start_timeend_time列之间的时间差。

例如,考虑第一行:

  • 开始时间和结束时间相差24小时
  • 开始时间和结束时间相差1440分钟
  • 开始时间和结束时间相差86,400秒

请注意,在此示例中, start_timeend_time列已格式化为日期时间。

如果您的时间列当前格式为字符串,则可以使用pd.to_datetime首先将每列转换为日期时间格式,然后再计算时间之间的差异:

 #convert columns to datetime format
df[[' start_time ', ' end_time ']] = df[[' start_time ', ' end_time ]]. apply (pd. to_datetime )

然后,您可以继续计算列之间的时间差,因为它们现在都采用 pandas 可以识别的日期时间格式。

其他资源

以下教程解释了如何在 pandas 中执行其他常见操作:

如何在 Pandas 中创建日期范围
如何从 Pandas 中的日期中提取月份
如何在 Pandas 中将时间戳转换为日期/时间

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注