将 datetime.datetime 对象转换为自 Python 纪元以来的天数

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 秒)。请注意此处的整数除法 - 不会 return 浮点数。

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 纪元以来的天数并且您有一列 Pythonic datetime64[ns].

看看我的