Pandas 计算两个Pandas列之间的时间差(小时和分钟)

Pandas 计算两个Pandas列之间的时间差(小时和分钟)

在本文中,我们将介绍如何使用Pandas计算两个时间列之间的时间差,以小时和分钟为单位。

假设我们有一个包含交通记录的数据集,其中包含出发时间和到达时间。我们想要计算每个行程所花费的时间。

首先,让我们创建一个示例数据集。

import pandas as pd

data = {
    'From': ['Taipei', 'Kaohsiung', 'Hsinchu', 'Tainan', 'Taichung'],
    'To': ['Taichung', 'Hsinchu', 'Taipei', 'Kaohsiung', 'Tainan'],
    'Departure': ['2021-06-01 08:00', '2021-06-01 09:30', '2021-06-01 10:15', '2021-06-01 11:00', '2021-06-01 12:15'],
    'Arrival': ['2021-06-01 09:20', '2021-06-01 11:00', '2021-06-01 12:00', '2021-06-01 13:10', '2021-06-01 14:30']
}

df = pd.DataFrame(data)

print(df)

这将输出以下数据集:

        From        To          Departure            Arrival
0     Taipei  Taichung  2021-06-01 08:00  2021-06-01 09:20
1  Kaohsiung   Hsinchu  2021-06-01 09:30  2021-06-01 11:00
2    Hsinchu    Taipei  2021-06-01 10:15  2021-06-01 12:00
3     Tainan  Kaohsiung  2021-06-01 11:00  2021-06-01 13:10
4   Taichung    Tainan  2021-06-01 12:15  2021-06-01 14:30

现在,让我们将Departure和Arrival列转换为Pandas的datetime对象,以便我们可以轻松地执行时间计算。

df['Departure'] = pd.to_datetime(df['Departure'])
df['Arrival'] = pd.to_datetime(df['Arrival'])

print(df.dtypes)

这将输出以下数据类型:

From                 object
To                   object
Departure    datetime64[ns]
Arrival      datetime64[ns]
dtype: object

现在,我们可以使用Timedelta对象计算两个时间列之间的时间差。

df['Duration'] = df['Arrival'] - df['Departure']

print(df)

这将输出以下数据集:

        From        To           Departure             Arrival      Duration
0     Taipei  Taichung 2021-06-01 08:00:00 2021-06-01 09:20:00      01:20:00
1  Kaohsiung   Hsinchu 2021-06-01 09:30:00 2021-06-01 11:00:00      01:30:00
2    Hsinchu    Taipei 2021-06-01 10:15:00 2021-06-01 12:00:00      01:45:00
3     Tainan  Kaohsiung 2021-06-01 11:00:00 2021-06-01 13:10:00      02:10:00
4   Taichung    Tainan 2021-06-01 12:15:00 2021-06-01 14:30:00      02:15:00

现在,我们可以将Duration列转换为小时和分钟的格式。

df['Duration'] = df['Duration'] / pd.Timedelta(hours=1)
df['Hours'] = df['Duration'].astype(int)
df['Minutes'] = round((df['Duration'] - df['Hours']) * 60)

print(df)

这将输出以下数据集:

        From        To
            Departure             Arrival  Duration  Hours  Minutes
0 2021-06-01 08:00:00 2021-06-01 09:20:00  1.333333      1       20
1 2021-06-01 09:30:00 2021-06-01 11:00:00  1.500000      1       30
2 2021-06-01 10:15:00 2021-06-01 12:00:00  1.750000      1       45
3 2021-06-01 11:00:00 2021-06-01 13:10:00  2.166667      2       10
4 2021-06-01 12:15:00 2021-06-01 14:30:00  2.250000      2       15

现在,我们已经成功地计算出了每个行程的持续时间,以小时和分钟为单位。

总结

在本文中,我们介绍了如何使用Pandas计算两个时间列之间的时间差,以小时和分钟为单位。我们首先将时间列转换为Pandas的datetime对象,然后使用Timedelta对象计算时间差。最后,我们将时间差转换为小时和分钟的格式。

此技能对于处理包含时间的数据非常有用,例如交通、航班、服务器日志等。希望这个教程能帮助您进一步了解时间的计算和处理方法。

阅读更多:Pandas 教程

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程