#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. У меня есть решение. Спасибо за ваше время и помощь.