Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将yyyy mm dd datetimes列转换为Python中的linux时间纪元_Python_Pandas_Datetime - Fatal编程技术网

将yyyy mm dd datetimes列转换为Python中的linux时间纪元

将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

在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'] - 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