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 教程