[英]Import Excel Data with datetime format to Pandas DF and convert to seconds
我正在嘗試將 excel 數據導入具有日期時間格式的 pandas df。 數據是由程序生成的用於跟蹤工作時間的導出文件。 我的代碼工作正常,但我剛剛意識到,我從認為我的導入文件始終包含以下格式開始:
任務 | 期間 |
---|---|
第一的 | 1900-01-01 22:21:20 |
第二 | 1900-01-01 12:13:14 |
我沒有意識到只要持續時間超過 24 小時,持續時間就會開始顯示日期“1900-01-01”。 只要“持續時間”超過 48 小時,持續時間就會切換到日期:“1900-01-02”,依此類推......
我現在需要一段代碼來將此格式轉換為秒數,如 integer。在我意識到我的錯誤之前,我已經為此使用了“pd.to_timedelta”,但我總是在計算總秒數之前清除日期。 我沒有從 timedelta 文檔中找到直接執行此操作的方法。
如果Duration
沒有日期部分,請添加前綴,然后計算 datetime 和 origin (1899-12-31) 之間的差異。
df['Duration'] = pd.to_datetime(
df['Duration'].where(df['Duration'].str.len() != 8,
other='1899-12-31 ' + df['Duration'])
)
df['Seconds'] = (df['Duration'] - pd.to_datetime('1899-12-31')) \
.dt.total_seconds().astype(int)
Output:
任務 | 期間 | 秒 |
---|---|---|
任務_a | 1900-01-01 04:00:00 | 100800 |
任務_b | 1900-01-02 02:00:00 | 180000 |
任務_c | 1899-12-31 06:00:00 | 21600 |
如果輸入值的格式為HH:MM:SS
,則使用 IIUC:
df['Seconds'] = pd.to_timedelta(df['Duration']).dt.total_seconds().astype(int)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.