Я пытаюсь создать производный столбец из двух других столбцов в кадре данных pandas, используя np.where.
df['END_TIME'] = np.where(((df['TYPE'] == 'BOLUS') & (df['DESCRIPTION'] == 'rocuronium')), df['START_TIME'] + dt.timedelta(minutes=30), None)
df['END_TIME'] = np.where(((df['TYPE'] == 'BOLUS') & (df['DESCRIPTION'] == 'vecuronium')), df['START_TIME'] + dt.timedelta(minutes=45), None)
но происходит, когда я запускаю вторую строку условия np.where, он очищает первые значения результата первого np.where.
DESCRIPTION TYPE START_TIME
rocuronium BOLUS 2018-04-26 05:32:00
rocuronium BOLUS 2018-04-26 05:38:00
vecuronium NOT BOLUS 2018-04-26 14:59:59
vecuronium NOT BOLUS 2018-04-26 15:59:59
vecuronium BOLUS 2018-04-27 07:50:00
Это фактический фрейм данных, и теперь я пытаюсь создать новый производный столбец на основе типа и описания.Когда я запускаю первый оператор np.where, результирующий кадр данных будет:
DESCRIPTION TYPE START_TIME END_TIME
rocuronium BOLUS 2018-04-26 05:32:00 2018-04-26 06:02:00
rocuronium BOLUS 2018-04-26 05:38:00 2018-04-26 06:08:00
vecuronium NOT BOLUS 2018-04-26 14:59:59
vecuronium NOT BOLUS 2018-04-26 15:59:59
vecuronium BOLUS 2018-04-27 07:50:00
Что хорошо.Но если я запускаю второй оператор np.where, результирующий фрейм данных выглядит так.
DESCRIPTION TYPE START_TIME END_TIME
rocuronium BOLUS 2018-04-26 05:32:00
rocuronium BOLUS 2018-04-26 05:38:00
vecuronium NOT BOLUS 2018-04-26 14:59:59 None
vecuronium NOT BOLUS 2018-04-26 15:59:59 None
vecuronium BOLUS 2018-04-27 07:50:00 2018-04-27 08:35:00
Я не знаю, почему я теряю данные первых операторов np.where.
Ожидаемый фрейм данных:
DESCRIPTION TYPE START_TIME END_TIME
rocuronium BOLUS 2018-04-26 05:32:00 2018-04-26 06:02:00
rocuronium BOLUS 2018-04-26 05:38:00 2018-04-26 06:08:00
vecuronium NOT BOLUS 2018-04-26 14:59:59 None
vecuronium NOT BOLUS 2018-04-26 15:59:59 None
vecuronium BOLUS 2018-04-27 07:50:00 2018-04-27 08:35:00
Я попытался создать следующую функцию и вызвать ее:
def add_roc(df):
if (df['TYPE'] == 'BOLUS') & (df['DESCRIPTION'] == 'rocuronium'):
df['END_TIME'] = df['START_TIME'] + dt.timedelta(minutes=30)
return df
, и выдается следующая ошибка:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Есть ли лучший способ решения этой проблемы?