Я пытаюсь написать функцию, которая будет определять, действительно ли столбец, который является типом данных объекта, должен быть реклассифицирован как тип данных даты и времени. Проверка того, все ли в столбце похоже на значение даты и времени, а затем преобразование его в тип данных даты и времени. Я пытаюсь расширить то, что я сейчас написал, чтобы увидеть, является ли это либо a. пустые значения или b. значения даты и времени, а затем преобразовать их в формат даты и времени.
У меня есть этот фрагмент кода, который работает правильно, переклассифицируя столбец в тип данных даты и времени, если все значения в столбце имеют формат просмотра даты и времени.
mask = df.astype(str).apply(lambda x : x.str.match('(\d{2,4}(-|/|\\|\.| )\d{2}(-|/|\\|\.| )\d{2,4})+')).all()
Я пытаюсь расширить фрагмент кода, чтобы определить, является ли он либо нулевым значением (None при обработке как str), либо значением, ищущим дату и время, прежде чем преобразовывать его в дату и время.
Я пытаюсь заставить эту строку кода работать, но я не уверен на 100%, как настроить эту лямбда-функцию, чтобы увидеть, являются ли все значения столбцов пустыми ИЛИ значением, ищущим время данных,
mask = df.astype(str).apply(lambda x : (x.astype(str) != "" or x.str.match('(\d{2,4}(-|/|\\|\.| )\d{2}(-|/|\\|\.| )\d{2,4})+')).all())
Любая помощь будет оценена по достоинству!
Ты можешь попробовать:
mask = df.astype(str).apply(lambda x: pd.to_datetime(x, errors='coerce')).notna().all()