2015-05-29 3 views
1

У меня есть столбец, который является временными отметками unix. Я хочу преобразовать этот столбец только в даты в формате %y-%m-%d. Просто чтобы проверить функцию to_datetime() я сделал ниже, который работает, как ожидалось, и дает мне колонку в формате, как этот 2015-05-12 00:11:30:Проблема с функцией pandas to_datetime

df['time'] = pd.to_datetime(df['time'], unit='s') 

Когда я добавляю в format аргумент, как показано ниже, я получаю сообщение об ошибке:

df['time'] = pd.to_datetime(df['time'], unit='s', format='%d/%m/%Y') 

ошибка ValueError: time data 1431389490 does not match format '%d/%m/%Y'

Как содрать часы, минуты и секунды, так что я только ушел с 2014-05-12?

+0

Вы хотите сохранить даты в виде строки или просто форматировать их отображение в редакции? –

+0

@PaulH Думаю, я просто хочу отформатировать свой дисплей. – metersk

+0

в редакции или в файле? –

ответ

4

Если вы хотите извлечь только дату, вы можете сделать это на втором этапе после преобразования DateTime:

x = pd.to_datetime(pd.Series([1431389490]), unit='s') 
# Datetime columns have a `.dt` attribute, with useful properties 
# and methods for working with dates 
x.dt.date 
Out[7]: 
0 2015-05-12 
dtype: object 

Это будет отбрасывать информацию о часах и минутах, но вы будете иметь возможность работать с полученным столбцом/рядом легко, потому что результатом является объект datetime.date, например вычитая, чтобы найти количество дней между вашим столбцом и определенной датой.

Если вы хотите хранить информацию о часах и минутах, но только дисплей это по-другому, я не уверен, что это возможно.

+0

Я получаю сообщение об ошибке, в котором говорится, что моя серия не имеет атрибута 'dt' – metersk

+0

Просто подумайте, почему бы не сделать' x = pd.to_datetime (pd.Series ([1431389490]), unit = 's'). dt.date' за один шаг? –

+0

@Meepl, какая версия панд? работает для меня на v0.16.1 –