我有一個包含行程資料的 CSV 檔案:
Trip ID,Depart Time,Arrive Time,Depart Timezone,Arrive Timezone
1,08/29/21 09:00 PM,08/29/21 09:45 PM,GMT-04:00,GMT-04:00
2,08/29/21 10:00 PM,08/30/21 01:28 AM,GMT-04:00,GMT-04:00
3,08/30/21 01:29 AM,08/30/21 01:30 AM,GMT-04:00,GMT-04:00
4,08/30/21 01:45 AM,08/30/21 03:06 AM,GMT-04:00,GMT-04:00
5,08/30/21 03:08 AM,08/30/21 03:58 AM,GMT-04:00,GMT-04:00
6,08/30/21 03:59 AM,08/30/21 04:15 AM,GMT-04:00,GMT-04:00
我可以將此檔案讀入資料幀:
trips = pd.read_csv("trips.csv", sep=',')
我想要完成的是添加一個列“持續時間”,它以分鐘為單位為我提供旅行持續時間。行程持續時間必須計算為行程到達時間和行程出發時間之間的差值。在上表中,“出發時間”相對于“出發時區”。同樣,“到達時間”相對于“到達時區”。請注意,在上面的示例中,到達和離開日期以及到達和離開時區恰好相同,但這對于我的資料通常不適用。
uj5u.com熱心網友回復:
您擁有的是 UTC 偏移量(GMT-04:00 比 UTC 晚四個小時);您可以通過 ' ' 連接日期/時間列和相應的偏移列并決議to_datetime。然后,您可以從生成的 tz 感知日期時間列計算持續時間 (timedelta)。前任:
# make datetime columns:
df['dt_depart'] = pd.to_datetime(df['Depart Time'] ' ' df['Depart Timezone'],
utc=True)
df['dt_arrive'] = pd.to_datetime(df['Arrive Time'] ' ' df['Arrive Timezone'],
utc=True)
注意:我在UTC=True這里使用以防輸入中存在混合的 UTC 偏移量。這給出了例如
df['dt_depart']
Out[6]:
0 2021-08-29 17:00:00 00:00
1 2021-08-29 18:00:00 00:00
2 2021-08-29 21:29:00 00:00
3 2021-08-29 21:45:00 00:00
4 2021-08-29 23:08:00 00:00
5 2021-08-29 23:59:00 00:00
Name: dt_depart, dtype: datetime64[ns, UTC]
然后
# calculate the travel duration (timedelta column):
df['traveltime'] = df['dt_arrive'] - df['dt_depart']
給例如
df['traveltime']
Out[7]:
0 0 days 00:45:00
1 0 days 03:28:00
2 0 days 00:01:00
3 0 days 01:21:00
4 0 days 00:50:00
5 0 days 00:16:00
Name: traveltime, dtype: timedelta64[ns]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/313686.html
