<p>尝试使用左<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html#pandas-dataframe-merge" rel="nofollow noreferrer">^{<cd1>}</a>和指示符,然后根据两个表中的值将指示符替换为<code>1</code>或<code>0</code>,类似于<a href="https://numpy.org/doc/stable/reference/generated/numpy.where.html#numpy-where" rel="nofollow noreferrer">^{<cd4>}</a>:</p>
<pre><code>new_df = pd.merge(df1, df2, on=['uid', 'a'], how='left', indicator='new')
new_df['new'] = np.where(new_df['new'].eq('both'), 1, 0)
</code></pre>
<p>选项2:使用<a href="https://pandas.pydata.org/docs/reference/api/pandas.Series.eq.html" rel="nofollow noreferrer">^{<cd5>}</a>+<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.astype.html" rel="nofollow noreferrer">^{<cd6>}</a>获取布尔值:</p>
<pre><code>new_df = pd.merge(df1, df2, on=['uid', 'a'], how='left', indicator='new')
new_df['new'] = new_df['new'].eq('both').astype(int)
</code></pre>
<p><code>new_df</code>:</p>
<pre><code> uid a b new
0 111 i1 2 1
1 111 i2 3 1
2 111 i4 5 0
3 111 i6 7 0
4 111 i5 8 0
5 222 i10 9 0
6 222 i11 12 1
7 222 i13 11 1
8 222 i2 1 1
9 333 i14 16 0
10 333 i3 2 0
11 333 i16 19 0
12 333 i3 4 0
13 444 i21 20 0
14 444 i9 5 0
</code></pre>