преобразуйте все столбцы типа данных даты в формат ГГГГ-ММ-ДД динамически, если у вас есть формат даты в кадре данных, используя pandas

#python #pandas #dataframe #date

Вопрос:

Я пытаюсь динамически преобразовать все столбцы даты в формат ГГГГ-ММ-ДД, используя фрейм данных, полученный из read_csv. столбцы приведены ниже.

 empno   ename   sal deptno  period_from hiredate    report_date end_date
 

используя re , найдите, есть ли в столбце символы «период или дата», а затем преобразуйте их в формат ГГГГ-ММ-ДД, но проблема в том, что в некоторых столбцах нет «периода или даты», которые на самом деле являются столбцами даты(пример «от» col).

 df_columns = [col for col in df.columns if re.search("period|date"),col)]
df(df_columns] = df[df_columns].apply(pd.to_datetime)
 

Теперь я хочу создать метод/функцию для идентификации всех столбцов типа данных даты в фрейме данных, а затем преобразовать их в формат ГГГГ-ММ-ДД/ожидаемый пользователем формат.

введите описание изображения здесь

Комментарии:

1. пожалуйста, предоставьте свои наборы данных в виде текста , а не изображений

Ответ №1:

Вы могли бы использовать что-то вроде:

 for col in df.filter(regex='period|date'):
    df[col] = pd.to_datetime(df[col])
 

Трудно дать вам гораздо лучший ответ и вывод без примера набора данных в виде текста, пожалуйста, обновите свой вопрос для получения более подробной информации.

Если у вас есть только эти форматы 01-01-2021 / 17-Jun-2021 / 18/06/2021 / 31122021 , следующее должно обрабатывать их все. Только в последнем случае требуется указать формат. Если у вас есть что-то более сложное, вам нужно будет провести некоторый анализ.

 for col in df.filter(regex='period|date'):
    try:
        df[col] = pd.to_datetime(df[col])
    except TypeError:
        df[col] = pd.to_datetime(df[col], format='%d%m%Y')
 

Комментарии:

1. Спасибо за вашу помощь @mozway. на самом деле есть еще один столбец(«От» ), имеющий формат даты. Я хочу динамически проверить, является ли тип данных столбца датой, а затем преобразовать ГГГГ-ММ-ДД.

2. У меня есть решение. Спасибо за ваше время и помощь.