簡體   English   中英

在 Python 中將 datetime.datetime 對象轉換為自紀元以來的天數

[英]Convert datetime.datetime object to days since epoch in Python

我有一個可能如下所示的pandas.Series對象:

import pandas as pd
myVar = pd.Series(["VLADIVOSTOK 690090", "MAHE", NaN, NaN, "VLADIVOSTOK 690090", "2000-07-01 00:00:00"])

當數據通過pandas讀入 Python 時, myVar[5]被解析為datetime.datetime對象。 我假設將此值轉換為自紀元 (36708) 以來的天數根本不困難。 我剛接觸 Python,不知道該怎么做。 提前致謝!

我不確定自紀元以來的 36,708 天(自 1970 年 1 月 1 日以來只有 16,644 天),但datetime.timedelta對象(用於日期算術)有一個days屬性:

>>> import datetime
>>> (datetime.datetime.utcnow() - datetime.datetime(1970,1,1)).days
16644

您可以先將其轉換為自紀元以來的秒數,然后將其除以一天中的秒數(一天中的 86,400 秒)。 請注意這里的整數除法 - 不會返回浮點數。

from datetime import datetime
now = datetime.now()
seconds = now.strftime("%s") # seconds since epoch
days = int(seconds) / 86400 # days since epoch

我添加了導入,現在作為我可以使用的日期時間對象的示例。

myVar = pd.Series(["VLADIVOSTOK 690090", "MAHE", "NaN", "NaN", "VLADIVOSTOK 690090", "2000-07-01 00:00:00"])

myVar[5] = pd.to_datetime(myVar[5]) - pd.datetime(1970,1,1)

print(myVar)
0     VLADIVOSTOK 690090
1                   MAHE
2                    NaN
3                    NaN
4     VLADIVOSTOK 690090
5    11139 days 00:00:00
dtype: object

對於 Pandas 數據框:

df_train["DaysSinceEpoch"] = [i.days for i in df_train["date"] - datetime.datetime(1970, 1, 1)]

假設您想要自1970-01-01 Unix Epoch 以來的天數,並且您有一列 Pythonic datetime64[ns]

並查看我的另一個完全相反的答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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