簡體   English   中英

導入 Excel 日期時間格式的數據到 Pandas DF 並轉換為秒

[英]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”,依此類推......

  • 當持續時間為 6 小時時,單元格的值顯示:'06:00:00'
  • 當持續時間為 28 小時時,單元格的值顯示:'1900-01-01 04:00:00
  • 當持續時間為 50 小時時,單元格的值顯示:'1900-01-02 02:00:00

我現在需要一段代碼來將此格式轉換為秒數,如 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM