3 回答

TA貢獻1865條經驗 獲得超7個贊
# create a mask using isin and any
mask = DataFrame1[DataFrame1.columns[2:]].isin(DataFrame1['SearchValue']).any(1)
# use numpy.where to assign values
DataFrame1['FinalResult'] = np.where(mask, DataFrame1['SearchValue'], 'XX')
ID SearchValue Check 1 Check 2 Check 60000 FinalResult
0 A1X1 J1 Q4 ND J1 J1
1 A1X2 X1 01 Q2 JK XX
2 A1X3 R6 R6 01 A5 R6
3 A1X4 J1 R6 A5 B6 XX

TA貢獻1784條經驗 獲得超8個贊
您想要搜索每行中的值:
mask = DataFrame1.filter(like='Check').eq(DataFrame1['SearchValue'], axis=0).any(1)
DataFrame1['FinalResult'] = DataFrame1['SerchValue'].where(mask, 'XX')
輸出:
ID SearchValue Check 1 Check 2 Check 60000 FinalResult
0 A1X1 J1 Q4 ND J1 J1
1 A1X2 X1 01 Q2 JK XX
2 A1X3 R6 R6 01 A5 R6
3 A1X4 J1 R6 A5 B6 XX

TA貢獻1810條經驗 獲得超4個贊
我會進入 numpy 世界并進行比較:
box = df.to_numpy()
box
array([['A1X1', 'J1', 'Q4', 'ND', 'J1'],
? ? ? ?['A1X2', 'X1', '01', 'Q2', 'JK'],
? ? ? ?['A1X3', 'R6', 'R6', '01', 'A5'],
? ? ? ?['A1X4', 'J1', 'R6', 'A5', 'B6']], dtype=object)
compare = box[:, 1, np.newaxis] == box[:, 2:]
現在分配numpy where
df['Final Result'] = np.where(np.sum(compare, axis=1), box[:, 1], "XX")
? ? ID? SearchValue Check 1 Check 2 Check 60000 Final Result
0? ?A1X1? ? J1? ? ? ? Q4? ? ? ND? ? ? J1? ? ? ? ? ?J1
1? ?A1X2? ? X1? ? ? ? 01? ? ? Q2? ? ? JK? ? ? ? ? ?XX
2? ?A1X3? ? R6? ? ? ? R6? ? ? 01? ? ? A5? ? ? ? ? ?R6
3? ?A1X4? ? J1? ? ? ? R6? ? ? A5? ? ? B6? ? ? ? ? ?XX
添加回答
舉報