在python 3.6.0和pandas 0.20.0中
有一个日期列yyyy-mm-dd
date
2017-08-16
2017-08-17
2017-08-18
这里有同样的问题
Convert a column of datetimes to epoch in Python
可惜的是,帖子中没有解决方案
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
有什么想法吗?谢谢。
答案 0 :(得分:0)
尝试pd.DateTimeIndex
并乘以1000可以使它变为毫秒(如果需要秒数,则可以忽略乘法)
df['Date'] = (pd.DatetimeIndex(df['Date']).astype(np.int64) // 10**9) * 1000
print(df)
Date
1502841600000
1502928000000
1503014400000
答案 1 :(得分:0)
您可以将其转换为datetime
并使用timestamp()
这样的事情。
from datetime import datetime
s = '2017-08-16'
epoch = datetime.strptime(s, "%Y-%m-%d").timestamp()
print(epoch)
# Output -- 1502821800.0
答案 2 :(得分: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列。
希望这会有所帮助。