У меня есть следующий кадр данных Pandas:
Index Name ID1 ID2 ID3
1 A Y Y Y
2 B Y Y
3 B Y
4 C Y
Я хочу добавить новый столбец «Несколько», чтобы указать те строки, в которых есть значение Y в более чем одном из столбцов ID1, ID2 и ID3.
Index Name ID1 ID2 ID3 Multiple
1 A Y Y Y Y
2 B Y Y Y
3 B Y N
4 C Y N
Я бы обычно использовал np.where
или np.select
например ::10000
df['multiple'] = np.where(<More than 1 of ID1, ID2 or ID3 have a Y in>), 'Y', 'N')
но я не могу понять, как написать условное выражение. Число столбцов идентификаторов может возрастать, поэтому я не могу охватить каждую комбинацию как отдельное условие (например, (ID1 = Y and ID3 = Y) or (ID2 = Y and ID3 = Y)
. Я думаю, что, возможно, мне нужно что-то, что подсчитывает значения Y для именованных столбцов?
За пределами Pandas, я бы подумал о работе со списком, добавив значения для каждого столбца, где Y, а затем посмотреть, если список имеет длину больше 1.
Но я не могу думать, как это сделать в рамках ограничений np.where
, np.select
или df.loc
.
Есть указатели?