Панды - преобразование d-ммм-гг в объект даты и времени - PullRequest
0 голосов
/ 31 октября 2018

У меня есть CSV с некоторыми данными, которые выглядят так:

excel doc

У меня есть много этих файлов, и я хочу прочитать их в DataFrame:

df = pd.read_csv(filepath, engine='c')
df['closingDate'] = pd.to_datetime(df['closingDate'], format='%dd-%mmm-%yy')
df['Fut Expiration Date'] = pd.to_datetime(df['Fut Expiration Date'], format='%d-%m-%yy')

Я пробовал множество форматов, но, похоже, ни один из них не работает. Есть ли альтернатива?

Ответы [ 3 ]

0 голосов
/ 31 октября 2018

Ознакомьтесь с директивами для datetimes здесь . Следующее должно работать, используя 3 буквенных месяца и 2 цифры года:

df['Fut Expiration Date'] = pd.to_datetime(df['Fut Expiration Date'], format='%d-%b-%y')
0 голосов
/ 31 октября 2018

На самом деле вам не нужно , чтобы указать формат здесь. Формат однозначный , если мы конвертируем его без указания формата, мы получим:

>>> df
       Date
0  1-Dec-99
1  1-Jul-99
2  1-Jun-99
3  1-Nov-99
4  1-Oct-99
5  1-Sep-99
6  2-Aug-99
7  2-Dec-99
>>> pd.to_datetime(df['Date'])
0   1999-12-01
1   1999-07-01
2   1999-06-01
3   1999-11-01
4   1999-10-01
5   1999-09-01
6   1999-08-02
7   1999-12-02
Name: Date, dtype: datetime64[ns]

В качестве альтернативы, мы можем посмотреть формат в документации модуля datetime [Python-doc] . Мы здесь видим, что:

%d   Day of the month as a zero-padded       01, 02, …, 31
     decimal number.

%b   Month as locale’s abbreviated name.     Jan, Feb, …, Dec (en_US);
                                             Jan, Feb, …, Dez (de_DE)

%y   Year without century as a               00, 01, …, 99
     zero-padded decimal number.

Таким образом, мы можем указать формат как:

>>> pd.to_datetime(df['Date'], format='%d-%b-%y')
0   1999-12-01
1   1999-07-01
2   1999-06-01
3   1999-11-01
4   1999-10-01
5   1999-09-01
6   1999-08-02
7   1999-12-02
Name: Date, dtype: datetime64[ns]
0 голосов
/ 31 октября 2018

Используйте %b для трехбуквенного месяца. Пожалуйста, смотрите Python strftime ссылка: http://strftime.org/

Я думаю, вы хотите: w на день, b на месяц и yy на год.

Я предполагаю, что дни не заполнены нулями, если дни заполнены нулями, тогда используйте d вместо w.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...