<pre><code>a={'age':[22,38,26,62,198,27],'no':[1,2,3,4,5,6]}
a = pd.DataFrame(a)
print (a)
age no
0 22 1
1 38 2
2 26 3
3 62 4
4 198 5
5 27 6
TableB= {'name': ['Braund', 'Cummings', 'Heikkinen', 'Allen','Mary','Celina','Roger'],
'age': [22,38,26,35,41,22,38],
'fare': [7.25, 71.83, 0 , 8.05,7,6.05,6],
'survived?': [False, True, True, False, True, False, True]}
TableB = pd.DataFrame(TableB)
print (TableB)
name age fare survived?
0 Braund 22 7.25 False
1 Cummings 38 71.83 True
2 Heikkinen 26 0.00 True
3 Allen 35 8.05 False
4 Mary 41 7.00 True
5 Celina 22 6.05 False
6 Roger 38 6.00 True
</code></pre>
<p>您可以将布尔掩码强制转换为整数,用于<code>True/False</code>到<code>1/0</code>映射:</p>
<pre><code>a['observer'] = a['age'].isin(TableB['age']).astype(int)
</code></pre>
<p>另一种解决方案是使用<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html" rel="nofollow noreferrer">^{<cd3>}</a>:</p>
<pre><code>a['observer'] = np.where(a['age'].isin(TableB['age']), 1, 0)
</code></pre>
<pre><code>print (a)
age no observer
0 22 1 1
1 38 2 1
2 26 3 1
3 62 4 0
4 198 5 0
5 27 6 0
</code></pre>
<p>如果使用字典,则使用列表理解和<code>if-else</code>并通过<code>in</code>测试成员资格:</p>
<pre><code>a={'age':[22,38,26,62,198,27],'no':[1,2,3,4,5,6]}
TableB= {'name': ['Braund', 'Cummings', 'Heikkinen', 'Allen','Mary','Celina','Roger'],
'age': [22,38,26,35,41,22,38],
'fare': [7.25, 71.83, 0 , 8.05,7,6.05,6],
'survived?': [False, True, True, False, True, False, True]}
a['observer'] = [1 if x in TableB['age'] else 0 for x in a['age']]
print (a)
{'age': [22, 38, 26, 62, 198, 27], 'no': [1, 2, 3, 4, 5, 6], 'observer': [1, 1, 1, 0, 0, 0]}
</code></pre>