将datetime.datetime对象转换为Python中epoch以来的天数

时间:2015-07-28 21:27:08

标签: 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"])
当数据通过myVar[5]读入Python时,

datetime.datetime被解析为pandas对象。我假设将此值转换为自纪元(36708)以来的天数并不困难。我刚接触Python,不知道该怎么做。提前谢谢!

4 个答案:

答案 0 :(得分:15)

我不知道自那个时代以来你在哪里获得36,708天(自1970年1月1日以来只有16,644天),但是datetime.timedelta个对象(用于日期)算术)具有days属性:

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

答案 1 :(得分:3)

您可以将此时间转换为秒数,然后将其除以一天中的秒数(一天中86,400秒)。请注意这里的整数除法 - 不会返回浮动。

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

对于 Pandas 数据框:

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

假设您想要自 Unix Epoch of 1970-01-01 以来的天数,并且您有一列 Pythonic datetime64[ns]

看看我的other answer with the exact reverse