<p>使用<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.combine_first.html" rel="nofollow noreferrer">^{<cd1>}</a>:</p>
<pre><code>df = df_B.combine_first(df_A)
print (df)
A B C
0 Hello 32.0 11
1 22 4.0 World
2 31 55.0 15
</code></pre>
<p>或<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html" rel="nofollow noreferrer">^{<cd2>}</a>,但所有数据都转换为字符串:</p>
<pre><code>df = pd.DataFrame(np.where(df_B.isnull(), df_A, df_B), index=df_A.index, columns=df_A.columns)
print (df)
A B C
0 Hello 32 11
1 22 4 World
2 31 55 15
</code></pre>
<p>编辑:首先使用默认内部联接<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.merge.html" rel="nofollow noreferrer">^{<cd3>}</a>,然后使用<code>rename</code>选择列并使用<code>combine_first</code>:</p>
<pre><code>df = df_B.merge(df_A, on=['ID','Date'], suffixes=('','_'))
cols = df.columns[df.columns.str.endswith('_')]
df = df[df_B.columns].combine_first(df[cols].rename(columns=lambda x: x.strip('_')))
print (df)
A B C Date ID
0 3.0 5.0 11.0 2018-10-23 id_c
1 31.0 55.0 11.0 2018-10-23 id_a
</code></pre>