2016-09-11 2 views
0

При преобразовании объекта panda в метку времени я столкнулся с этой странной проблемой.AttributeError: объект Timestamp не имеет атрибута timestamp

Значение поезда ['date'] похоже на 01/05/2014, которое я пытаюсь преобразовать в linuxtimestamp.

Мой код:

Train = pd.read_csv("data.tsv", sep='\t') # use TAB as column separator 
Train['timestamp'] = pd.to_datetime(Train['date']).apply(lambda a: a.timestamp()) 

И я получаю эту ошибку:

Traceback (most recent call last): 
    File "socratis.py", line 11, in <module> 
    Train['timestamp'] = pd.to_datetime(Train['date']).apply(lambda a: a.timestamp()) 
    File "/home/ubuntu/.local/lib/python2.7/site-packages/pandas/core/series.py", line 2220, in apply 
    mapped = lib.map_infer(values, f, convert=convert_dtype) 
    File "pandas/src/inference.pyx", line 1088, in pandas.lib.map_infer (pandas/lib.c:62658) 
    File "socratis.py", line 11, in <lambda> 
    Train['timestamp'] = pd.to_datetime(Train['date']).apply(lambda a: a.timestamp()) 
AttributeError: 'Timestamp' object has no attribute 'timestamp' 

ответ

0

Метод to_datetime возвратит TimeStamp экземпляр. Я не уверен, что вы надеетесь выполнить с помощью функции лямбда, но, похоже, вы пытаетесь преобразовать какой-либо объект в TimeStamp.

Try удаления раздела применяются так это выглядит следующим образом:

Train['timestamp'] = pd.to_datetime(Train['date'])

+0

Если мы сделаем это, оно не преобразует дату в метку времени linux. Который мне нужен – user3449212

+0

Попробуйте это. если он работает, обновите ответ: 'Train ['timestamp'] = time.mktime (pd.to_datetime (Train ['date']). timetuple())' – meganaut

+0

какой питон вы используете? Я получаю 'AttributeError: объект 'Series' не имеет атрибута 'timetuple' ' – user3449212

0

Вы ищете datetime.timestamp(), который был добавлен в Python 3.3. Сам Панда не участвует.

N.B..timestamp() will localize naive timestamps to the computer's UTC offset. To the contrary, suggestions in this answer are timezone-agnostic.

С пандой uses nanoseconds internally (NumPy datetime64[ns]), вы должны быть в состоянии сделать это даже с Python 2:

Train['timestamp'] = pd.to_datetime(Train['date']).value/1e9 

Или быть более явные трейлерами что-то вроде этого (от даты и времени, документов):

import pandas as pd 
from datetime import datetime, timedelta 

def posix_time(dt): 
    return (dt - datetime(1970, 1, 1))/timedelta(seconds=1) 

Train['timestamp'] = pd.to_datetime(Train['date']).apply(posix_time) 
Смежные вопросы