将yyyy mm dd datetimes列转换为Python中的linux时间纪元
在python 3.6.0和pandas 0.20.0中 有一个日期列yyy-mm-dd将yyyy mm dd datetimes列转换为Python中的linux时间纪元,python,pandas,datetime,Python,Pandas,Datetime,在python 3.6.0和pandas 0.20.0中 有一个日期列yyy-mm-dd date 2017-08-16 2017-08-17 2017-08-18 这里也有同样的问题 但可悲的是,post中的所有解决方案都不起作用 df['date']=df['date'].astype('int64')//1e9 ValueError: invalid literal for int() with base 10: '2017-08-16' df['date']=(df['date
date
2017-08-16
2017-08-17
2017-08-18
这里也有同样的问题
但可悲的是,post中的所有解决方案都不起作用
df['date']=df['date'].astype('int64')//1e9
ValueError: invalid literal for int() with base 10: '2017-08-16'
df['date']=(df['date'] - dt.datetime(1970,1,1)).dt.total_seconds()
NameError: name 'dt' is not defined
有什么想法吗?谢谢。尝试使用
pd.DateTimeIndex
并将1000乘以几毫秒(如果需要,可以在几秒钟内忽略乘法)
您可以将其转换为
datetime
并使用timestamp()
像这样的
from datetime import datetime
s = '2017-08-16'
epoch = datetime.strptime(s, "%Y-%m-%d").timestamp()
print(epoch)
# Output -- 1502821800.0
试试这个:
from datetime import datetime as dt
# String for the date
s = '2017-08-16'
#Convert string to datetime
s_dt = dt.strptime(s, '%Y-%m-%d')
#Initialize epoch
epoch = dt.utcfromtimestamp(0)
#Get your difference from epoch in ms
linux_time = (s_dt - dt.utcfromtimestamp(0)).total_seconds()*1000
#Your output
linux_time
1502841600000.0
这是单个日期对象的代码。您可以创建一个函数并使用lambda将其应用于pandas列
希望这能有所帮助。错误说明:您的列是字符串,您没有正确导入。这就是为什么制作一个最小的可复制示例很重要的原因。第二个错误可能是因为您忘记导入正确的模块(即
将datetime导入为dt
,或者如果您有导入datetime
,则使用datetime重命名dt)
from datetime import datetime as dt
# String for the date
s = '2017-08-16'
#Convert string to datetime
s_dt = dt.strptime(s, '%Y-%m-%d')
#Initialize epoch
epoch = dt.utcfromtimestamp(0)
#Get your difference from epoch in ms
linux_time = (s_dt - dt.utcfromtimestamp(0)).total_seconds()*1000
#Your output
linux_time
1502841600000.0