Как преобразовать даты в кадре данных Pandas в тип данных 'date'?

У меня есть кадр данных Pandas, один из столбцов которого содержит строки даты в формате «YYYY-MM-DD», например «2013-10-28».

На данный момент dtype столбца является «объектом».

Как преобразовать значения столбцов в формат даты Pandas?

Использовать астип

In [31]: df Out[31]: a time 0 1 2013-01-01 1 2 2013-01-02 2 3 2013-01-03 In [32]: df['time'] = df['time'].astype('datetime64[ns]') In [33]: df Out[33]: a time 0 1 2013-01-01 00:00:00 1 2 2013-01-02 00:00:00 2 3 2013-01-03 00:00:00 

В сущности, это эквивалентно @waitingkuo, но я бы использовал здесь to_datetime (кажется немного чище и предлагает некоторые дополнительные функции, например, dayfirst ):

 In [11]: df Out[11]: a time 0 1 2013-01-01 1 2 2013-01-02 2 3 2013-01-03 In [12]: pd.to_datetime(df['time']) Out[12]: 0 2013-01-01 00:00:00 1 2013-01-02 00:00:00 2 2013-01-03 00:00:00 Name: time, dtype: datetime64[ns] In [13]: df['time'] = pd.to_datetime(df['time']) In [14]: df Out[14]: a time 0 1 2013-01-01 00:00:00 1 2 2013-01-02 00:00:00 2 3 2013-01-03 00:00:00 

Я полагаю, что многие данные поступают в Pandas из CSV-файлов, и в этом случае вы можете просто преобразовать дату во время начального CSV-чтения:

dfcsv = pd.read_csv('xyz.csv', parse_dates=[0]) где 0 относится к столбцу, в котором находится дата.
Вы также можете добавить , index_col=0 если хотите, чтобы дата была вашим индексом.

См. http://pandas.pydata.org/pandas-docs/stable/generated/pandas.io.parsers.read_csv.html.

Теперь вы можете сделать df['column'].dt.date

Обратите внимание, что для объектов datetime, если вы не видите час, когда все они 00:00:00, это не панды. Это ноутбук iPython, который пытается сделать вещи красивыми.