擅长:python、mysql、java
<p>您可以使用<code>map</code>和<code>stack</code>分两步执行此操作,然后应用<code>groupby</code>并获取最大索引位置值:</p>
<pre><code>myset = {'NAM1', 'MAMJ'}
s = df.filter(like='name').stack()
s1 = s[s.isin(myset)].groupby(level=[0]).last()
print(s1)
0 NAM1
1 MAMJ
dtype: object
</code></pre>
<p>然后映射到数据帧上:</p>
<pre><code>df['matched'] = df.index.map(s1) # add .fillna('') if you want to replace blanks with whitespace.
print(df)
type object name1 name2 name3 name4 name5 name6 matched
0 PL Y NAM1 NAM2 NAM3 None None None NAM1
1 PL Z NamY NAMZ NAM1 MAMJ NAMY NamT MAMJ
2 PL Z NamW NAMG NAMO MAMR NAMV NamL NaN
</code></pre>