Как преобразовать дату в определенном формате без потери типа даты в кадре данных Pandas - PullRequest
2 голосов
/ 02 ноября 2019

У меня есть список столбцов, которые мне нужно преобразовать в дату без потери формата типа даты. Для преобразования в дату можно использовать df1[col] = df1[col].astype('datetime64[ns]'), который дает фактический тип даты, но если я хочу, чтобы он был типа '%m/%d/%Y', здесь часто предлагается сделать следующее: df1[col] = df1[col].dt.strftime('%m/%d/%Y'), но в Excel это теперь распознается кактип строки, а не тип даты.

Я просмотрел много сообщений и искал в Интернете, чтобы найти решение этой проблемы, и оно должно быть.

Вот мой код, который дает неправильные типы, которые мне не нужны:

convert_date_cols = ['CutoffDate', 'ModEffectiveDate', 'IOExpirationDate', 'FirstRateAdjustmentDate', 'GF_Service_Xfer_Date', 
                    'BPODate', 'FirstPaymentDate', 'MaturityDate', 'NextRateAdjustmentDate', 'NextPaymentAdjustmentDate',
                    'ModFirstPayDate', 'ModMaturityDate', 'REO Date', 'FCDate', 'BK Date', 'Fico Score Date']

for i, col in enumerate(convert_date_cols):
    df1[col] = df1[col].astype('datetime64[ns]')
    df1[col] = df1[col].dt.strftime('%m/%d/%Y')

1 Ответ

1 голос
/ 02 ноября 2019

Вы пытаетесь разрешить противоречие в терминах. Код, который вы опубликовали явно , изменяет переменную datetime на строковое представление. Не стоит ожидать, что Excel будет рассматривать это как дату для вас. Однако обратите внимание, что большая часть прогресса зависит от желания чего-то «необоснованного» и от того, чтобы это произошло.

Я подозреваю, что ваша настоящая проблема заключается в том, чтобы в электронной таблице отображалась дата в нужном формате. Для этого не принимайте вслепую автоматическую настройку в вашем файле Excel. Напишите немного дополнительного кода, чтобы указать желаемый формат отображения столбца. См. Документацию Excel для деталей. Затем посмотрите, какую часть этого элемента управления вы можете получить через интерфейс Python.

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