在Python中将datetime.datetime对象转换为自历元起的天数

在Python中将datetime.datetime对象转换为自历元起的天数,python,pandas,datetime,date-formatting,epoch,Python,Pandas,Datetime,Date Formatting,Epoch,我有一个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)以来的天数一点也不困难。我刚刚接触Pyth

我有一个
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,不知道怎么做。提前谢谢

我不确定从新纪元到现在的36708天(从1970年1月1日到现在只有16644天),但是
datetime.timedelta
对象(用于日期算术)有一个
days
属性:

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

您可以先将其转换为自历元起的秒数,然后将其除以一天中的秒数(每天86400秒)。请注意此处的整数除法-不会返回浮点

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

我添加了导入,现在作为可以使用的datetime对象的示例。

对于熊猫数据帧:

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
df_train["DaysSinceEpoch"] = [i.days for i in df_train["date"] - datetime.datetime(1970, 1, 1)]
假设您需要自Unix纪元1970-01-01以来的天数,并且有一列Pythonic
datetime64[ns]


看看我的。

对不起,我可能说错了。没错,Unix系统的时代是1970年1月1日。我正在使用Excel表格,所以“纪元”从技术上讲是1900年1月1日,但实际上是1899年12月30日,以便更正它不是闰年。不过,你的解决办法是有效的。啊,我明白了。在任何情况下,您都可以看到纪元日期很容易更改。您可以使用您想要的任何参考日期来代替
1970,1,1
@brittenb:related:related:或者使用
from time import time
time()/(24*60*60)
。这就是今天的17526.0。我使用了Python3.6,但在Python2.7中,可以通过从未来导入分部导入
(或者更好地导入所有未来导入)来实现同样的效果。