3 回答
![?](http://img1.sycdn.imooc.com/54584ef20001deba02200220-100-100.jpg)
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
![?](http://img1.sycdn.imooc.com/545845d30001ee8a02200220-100-100.jpg)
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
![?](http://img1.sycdn.imooc.com/5333a0780001a6e702200220-100-100.jpg)
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
添加回答
举报