pandas. Изменить значение int на дату
Есть Excel файл с выгрузкой из системы, кривоватая.. Во-первых, все колонки с датами выгружаются с "зеленым треугольником" (как неопределенный формат). Во-вторых, если дата исходного заказа отсутствует она выгружается, как 00000000..
Помогите заменить 00000000 на пустую ячейку, а даты превратить в формат дат. Pandas изначально их воспринимает как int
С другими колонками, где нет 00000000 получилось справиться так:
order_df['ord_Date'] = pd.to_datetime(order_df['ord_Date'].str[:4] + '-' + order_df['ord_Date'].str[4:6] + '-' + order_df['ord_Date'].str[6:8])
Сразу оговорюсь, функция pd.to_datatime выдавала некорректные значения. Например, дата (с "зеленым треугольником") 20220707 после обработки функцией превращалась в 1970-01-01 00:00:00.020220707. Установка разных форматов дат тоже не дала результата.
Пробовала через if, не работает:
if order_df.ord_Orig_Date == 0:
order_df['ord_Orig_Date'] = None
else:
order_df['ord_Orig_Date'] = pd.to_datetime(order_df['ord_Orig_Date'].str[:4] + '-' + order_df['ord_Orig_Date'].str[4:6] + '-' + order_df['ord_Orig_Date'].str[6:8])
Ошибка: ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()
Пробовала через Numpy, не работает:
order_df['ord_Orig_Date'] = np.where(order_df['ord_Orig_Date'] != 0,
pd.to_datetime(order_df['ord_Orig_Date'].str[:4] + '-' +
order_df['ord_Orig_Date'].str[4:6] + '-' +
order_df['ord_Orig_Date'].str[6:8]), None)
Ошибка: AttributeError: Can only use .str accessor with string values!. Did you mean: 'std'?
Пробовала и так:
order_df['ord_Orig_Date'] = np.where(order_df['ord_Orig_Date'] != 0,
pd.to_datetime(order_df['ord_Orig_Date'].astype(str).str[:4] + '-' +
order_df['ord_Orig_Date'].astype(str).str[4:6] + '-' +
order_df['ord_Orig_Date'].astype(str).str[6:8]), None)
Ошибка: File "", line 3, in raise_from dateutil.parser._parser.ParserError: day is out of range for month: 0-- present at position 0