我有一個包含多行的資料框,例如以下示例,以及兩個單獨的物件(字串)列,如下所示:
Date Time
18 Jun 2022 10:22
18 Jun 2022 10:03
15 Jun 2022 21:34
我需要創建一個新列,該列有一個整數,描述自合并這兩列的紀元以來的秒數
我在 lambda 函式中使用 strptime 將 Date 更改為“YYYY-MM-DD”格式,其中 MM 現在是零導致的月份數字,例如“06”而不是“Jun”,所以新的資料框是喜歡:
Date Time NewDate
18 Jun 2022 10:22 2022-06-18
18 Jun 2022 10:03 2022-06-18
15 Jun 2022 21:34 2022-06-15
其中 Date 和 Time 是物件,但 NewDate 是 DateTime。
我被困在嘗試將 NewDate 日期時間值重新轉換為帶有 strftime 的字串,然后將時間字串也連接起來,然后將其更改為自紀元以來的最終秒數。
當然,也許有更好的整體想法/策略。
感謝您的幫助。
uj5u.com熱心網友回復:
您可以創建一個日期時間資料型別列,例如
df['datetime'] = pd.to_datetime(df['Date'] ' ' df['Time'])
df
Date Time datetime
0 18 Jun 2022 10:22 2022-06-18 10:22:00
1 18 Jun 2022 10:03 2022-06-18 10:03:00
2 15 Jun 2022 21:34 2022-06-15 21:34:00
pandasdatetime 在內部使用 Unix 時間,但自紀元以來使用納秒。因此,您可以轉換為自 Unix 紀元以來的秒數
df['unix'] = df['datetime'].astype('int64')/1e9
df
Date Time datetime unix
0 18 Jun 2022 10:22 2022-06-18 10:22:00 1.655548e 09
1 18 Jun 2022 10:03 2022-06-18 10:03:00 1.655547e 09
2 15 Jun 2022 21:34 2022-06-15 21:34:00 1.655329e 09
請注意,由于我們沒有設定時區,“日期時間”將假定為 UTC。
要以秒為單位獲取相對于最早日期的時間,您可以使用
df['unix']-df['unix'].min()
# or if you don't actually need Unix time:
(df['datetime']-df['datetime'].min()).dt.total_seconds()
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/497464.html
