您好,我正在嘗試從我的 excel 資料中提取日期和時間列。我將列作為具有浮點值的 DataFrame,使用后pandas.to_datetime我得到的日期與來自 excel 的實際日期不同。例如,在 excel 中開始日期是 01.01.1901 00:00:00 但在 python 中我得到 1971-01-03 00:00:00.000000 這樣的。我怎么解決這個問題?

我需要使用 DataFrame 的總秒數的最終輸出。第一個單元格以 00 秒開始,下一個單元格以秒為時間步長(每個單元格的時間差為 15 分鐘。)
謝謝你。
uj5u.com熱心網友回復:
您的輸入是小數天數,因此如果您想要相對于第一個條目的持續時間(以秒為單位),實際上無需轉換為 datetime。從該列的其余部分中減去它并乘以一天中的秒數:
import pandas as pd
df = pd.DataFrame({"Datum/Zeit": [367.0, 367.010417, 367.020833]})
df["totalseconds"] = (df["Datum/Zeit"] - df["Datum/Zeit"].iloc[0]) * 86400
df["totalseconds"]
0 0.0000
1 900.0288
2 1799.9712
Name: totalseconds, dtype: float64
如果你必須使用日期時間,你需要轉換為timedelta(duration) 來做同樣的事情,例如
df["datetime"] = pd.to_datetime(df["Datum/Zeit"], unit="d")
# df["datetime"]
# 0 1971-01-03 00:00:00.000000
# 1 1971-01-03 00:15:00.028800
# 2 1971-01-03 00:29:59.971200
# Name: datetime, dtype: datetime64[ns]
# subtraction of datetime from datetime gives timedelta, which has total_seconds:
df["totalseconds"] = (df["datetime"] - df["datetime"].iloc[0]).dt.total_seconds()
# df["totalseconds"]
# 0 0.0000
# 1 900.0288
# 2 1799.9712
# Name: totalseconds, dtype: float64
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/521360.html
