Мне нужно отклонить записи на основе набора условий. Помимо сохранения, если строка была отклонена, я хочу также отслеживать критерии, с которых начались записи. Вот что я сейчас делаю:
np.random.seed(seed=1)
df=pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('abcd'))
#condition 1
df["accepted"]=np.where(df.a<10, "No", "")
df["reason"]=np.where(df.a<10, "a less than 10 ", "")
#condition 2
df["accepted"]=np.where(df.b<30, "No", df.accepted)
df["reason"]=np.where(df.b<30, df.reason+"b less than 10 ", df.reason)
набор условий велик, и они в некотором роде сложны в реальном сценарии. Условия со временем будут меняться, и я хочу уменьшить объем обслуживания, поэтому я попытался объединить два оператора where в одно:
df[["accepted","reason"]]=np.where(df.c>20, ["No",df.reason + "c higher than 20 "], [df.accepted,df.reason])
, но получил:
ValueError : операнды не могут быть переданы вместе с фигурами (100,) (2,) (2,100)
Есть ли способ установить два столбца в одном выражении where ? Или у вас есть альтернативный подход, чтобы предложить? Моя цель - поддерживать последовательный подход (т. Е. Отклонять условие строк по условию) и иметь способ оценить, какое условие отклонило запись. Мой фрейм данных содержит около 100 тыс. Записей.