Np.where() при создании нового столбцаPython

Программы на Python
Anonymous
Np.where() при создании нового столбца

Сообщение Anonymous »

Я пытаюсь создать новый столбец «Новый» во фрейме данных на основе существующих: если столбец «Мин. дата» равен нулю, то мы берем данные из столбца «Дата начала», в противном случае мы возьмите дату из «Минимальной даты» в строковом формате, объедините ее со временем из столбца «Время». Форматируем результат в формате date-time.

Код: Выделить всё

fffg = pd.DataFrame({'N': [1, 2, 3], 'MinDate': [date(2023,1,2), None, date(2022,1,7)],
'Time': [datetime.time(8, 48, 0), datetime.time(8, 48, 0), datetime.time(8, 48, 0)],
'Start_Date': [datetime.datetime(2022,4,1,15,10), datetime.datetime(2023,4,1,15,10), datetime.datetime(2022,5,1,15,10)]})
fffg['MinDate'] = pd.to_datetime(fffg['MinDate'])
fffg['New'] = np.where(pd.notnull(fffg['MinDate']),
pd.to_datetime(fffg['MinDate'].astype(str)+' '+fffg['Time'].astype(str)),
fffg['Start_Date']
)
fffg
но я получаю сообщение об ошибке:
"ValueError: данные времени "NaT 08:48:00" не соответствуют формату "%Y-%m-%d %H" :%M:%S", в позиции 1. Возможно, вы захотите попробовать:
- передать формат, если ваши строки имеют согласованный формат;
- передать format='ISO8601', если все ваши строки имеют формат ISO8601, но не обязательно в одном и том же формате;
- передается format='mixed', и формат будет определяться для каждого элемента индивидуально. Возможно, вы захотите использовать dayfirst. рядом с этим."
Похоже, что фильтрация внутри np.where() игнорируется. Как можно избежать этой ошибки?

Подробнее здесь: https://stackoverflow.com/questions/788 ... new-column

Вернуться в «Python»