<p>使用<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.map.html" rel="nofollow noreferrer">^{<cd1>}</a>替换缺少的值<code>Marks1</code>替换为<code>Marks2</code>替换为<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.fillna.html" rel="nofollow noreferrer">^{<cd4>}</a>:</p>
<pre><code>df = df2.set_index('No')
df1['Total'] = df1['No'].map(df['Marks1'].fillna(df['Marks2']))
print (df1)
No Total
0 1234 99.0
1 2515 98.0
2 3412 20.0
3 4854 98.0
4 7732 NaN
</code></pre>
<p>如果可能<code>No</code>中的<code>df2</code>重复值,则使用:</p>
<pre><code>print (df2)
No Marks1 Marks2
0 1234 99.0 23.0 <- duplicated No
1 1234 98.0 31.0 <- duplicated No
2 3412 NaN 20.0
3 4854 NaN 98.0
4 7732 NaN NaN
#newer pandas versions
df = df2.set_index('No').sum(level=0, min_count=1)
#oldier pandas versions
#df = df2.set_index('No').sum(level=0)
print (df)
Marks1 Marks2
No
1234 197.0 54.0<- unique No, values are summed per index created by No
3412 NaN 20.0
4854 NaN 98.0
7732 NaN NaN
df1['Total'] = df1['No'].map(df['Marks1'].fillna(df['Marks2']))
print (df1)
No Total
0 1234 197.0
1 2515 NaN
2 3412 20.0
3 4854 98.0
4 7732 NaN
</code></pre>
<p>如果在<code>df1</code>和<code>df2</code>中有相同的索引值,并且每个<code>No</code>值匹配使用:</p>
<pre><code>df1['Total'] = df2['Marks1'].fillna(df2['Marks2'])
</code></pre>