Pandas преобразует значение строки My date в столбце date в целое число

У меня есть файл excel, который я использую pd.read_excel() для чтения, внутри файла excel есть несколько столбцов даты (тип данных даты - строка и должна соответствовать этому формату: dd/mm/yyyy. Проблема заключается в том, что когда файл excel преобразуется в кадр данных с помощью pd.read_excel(), значения преобразуются в целое число.

Кто-нибудь знает, как я могу сохранить значение в файле excel после его преобразования в dataframe.

Снимок экрана ниже: Колонки с форматом даты enter image description here

В что преобразуются значения после преобразования файла в кадр данных. enter image description here

"43800" - это то, во что было преобразовано значение "Incorporation Date".

Что я пробовал:

for column in columns_with_date_string:
    client_entity_df[column] = pd.to_datetime(
        client_entity_df[column].astype(int)
    )
    client_entity_df[column] = client_entity_df[column].dt.strftime('%d/%m/%Y')

При таком подходе значения возвращались как "01/01/1970", вместо указанных дат

TLDR:

Я в основном хочу сохранить значение столбцов даты (12/11/2022) в моем файле excel, где формат "dd/mm/yyy", когда файл excel преобразуется в фрейм данных, pandas в настоящее время изменяет значения на целое число (которое, как я предполагаю, является эпохой), когда он преобразует файл в целое число.

Вы можете использовать:

df_excel = pd.read_excel(file, dtype=object)

Все колонки стали объектного типа и после этого вы можете преобразовать их в другой тип, если вам нужно:

pd.to_datetime(df_excel['column_name'])

Так что у меня есть решение этой проблемы:

for column in columns_with_date_string:
    df[column] = df[column].apply(
        lambda x: datetime.fromordinal(datetime(1900, 1, 1).toordinal() + int(x) - 2)
    )
    df[column] = df[column].dt.strftime('%m/%d/%Y')

Этот SO ответ был полезен.

Вернуться на верх