<p>Pandas将自动在索引/列上对齐,只要确保设置了正确的索引,假设<code>scode</code>是您希望合并内容的方式:</p>
<pre><code>In [5]: df = pd.DataFrame({"scode": [11, 22, 33, 44], "sname": ["aa", "bb", "cc", "dd"], "sub1": [ "London", np.nan, "Delhi", np.nan], "sub2": [np.nan, np.nan, "Sydne
...: y", np.nan]})
...:
In [6]: df.set_index('scode',inplace=True)
In [7]: subs = pd.DataFrame({0: [22, 44], 1: ["Milford Sound", "Queenstown"], 2: ["Oslo", np.nan]})
...:
In [8]: subs.set_index(0, inplace=True)
In [9]: subs.columns=['sub1','sub2']
</code></pre>
<p>给你这样的东西:</p>
<pre><code>In [10]: df
Out[10]:
sname sub1 sub2
scode
11 aa London NaN
22 bb NaN NaN
33 cc Delhi Sydney
44 dd NaN NaN
In [11]: subs
Out[11]:
sub1 sub2
0
22 Milford Sound Oslo
44 Queenstown NaN
</code></pre>
<p>现在,只需执行普通赋值,选择适当的列/索引:</p>
<pre><code>In [12]: df.loc[subs.index.values,['sub1', 'sub2']] = subs
In [13]: df
Out[13]:
sname sub1 sub2
scode
11 aa London NaN
22 bb Milford Sound Oslo
33 cc Delhi Sydney
44 dd Queenstown NaN
</code></pre>
<p>始终可以重置以前使用的索引:</p>
<pre><code>In [14]: df.reset_index(inplace=True)
In [15]: df
Out[15]:
scode sname sub1 sub2
0 11 aa London NaN
1 22 bb Milford Sound Oslo
2 33 cc Delhi Sydney
3 44 dd Queenstown NaN
</code></pre>