Pandas преобразует значение строки My date в столбце date в целое число
У меня есть файл excel, который я использую pd.read_excel()
для чтения, внутри файла excel есть несколько столбцов даты (тип данных даты - строка и должна соответствовать этому формату: dd/mm/yyyy
. Проблема заключается в том, что когда файл excel преобразуется в кадр данных с помощью pd.read_excel()
, значения преобразуются в целое число.
Кто-нибудь знает, как я могу сохранить значение в файле excel после его преобразования в dataframe.
Снимок экрана ниже: Колонки с форматом даты
В что преобразуются значения после преобразования файла в кадр данных.
"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 ответ был полезен.