<p>对于测试,如果每行包含值,则使用<code>apply</code>和<code>in</code></p>
<p>对于布尔值<code>True, False</code>:</p>
<pre><code>df['match'] = df.apply(lambda x: x['id'] in x['account'], axis=1)
</code></pre>
<p>对于字符串<code>'True', 'False'</code>:</p>
<pre><code>df['match'] = np.where(df.apply(lambda x: x['id'] in x['account'], axis=1), 'True','False')
print (df)
id name account match
0 01 John AB01 True
1 02 Emma AB03 False
2 03 Alice AB03 True
</code></pre>
<p>编辑:</p>
<p>缺少值,因此可能的解决方案是使用<code>np.nan == np.nan</code>是<code>False</code>,因此添加了<code>if-else</code>语句:</p>
<pre><code>print (df)
id name account
0 01 John AB01
1 02 Emma NaN
2 03 Alice AB03
</code></pre>
<p>对于布尔值<code>True, False</code>:</p>
<pre><code>df['match'] = df.apply(lambda x: x['id'] in x['account']
if x['account'] == x['account']
else False, axis=1)
</code></pre>
<p>对于字符串<code>'True', 'False'</code>:</p>
<pre><code>df['match'] = np.where(df.apply(lambda x: x['id'] in x['account']
if x['account'] == x['account']
else False, axis=1), 'True','False')
print (df)
id name account match
0 01 John AB01 True
1 02 Emma NaN False
2 03 Alice AB03 True
</code></pre>
<p>另一个想法是使用带有<code>try-exception</code>语句的自定义函数:</p>
<pre><code>def test(x):
try:
return x['id'] in x['account']
except Exception:
return False
</code></pre>
<p>对于布尔值<code>True, False</code>:</p>
<pre><code>df['match'] = df.apply(test, axis=1)
</code></pre>
<p>对于字符串<code>'True', 'False'</code>:</p>
<pre><code>df['match'] = np.where(df.apply(test, axis=1), 'True','False')
</code></pre>