<p>我不是百分之百的清楚你如何索引你的数据帧(<code>data1</code>和<code>data2</code>),但是如果你在列<code>'c'</code>上对它们进行索引,那就可以了。在</p>
<p>我是这样创建你的数据的:</p>
<pre><code>import pandas as pd
data1 = pd.DataFrame({'a': ['a1', None, 'a3'],
'b': ['b1', 'b2', None],
'c': ['c1', 'c2', 'c3']})
data2 = pd.DataFrame({'a': ['1a', '2a', '3a', '4a'],
'c': ['c1', 'c2', 'c3', 'c4'],
'd': ['1d', '2d', '3d', '4d']})
</code></pre>
<p>然后我将两者的索引设置为列<code>'c'</code>:</p>
^{pr2}$
<p>然后我像您一样使用<code>combine_first</code>:</p>
<pre><code>data_combined = data1.combine_first(data_2)
</code></pre>
<p>我明白了:</p>
<pre><code> a b d
c
c1 a1 b1 1d
c2 2a b2 2d
c3 a3 None 3d
c4 4a NaN 4d
</code></pre>
<p>不知道为什么不需要索引为<code>'c4'</code>的行或列<code>'d'</code>,但删除它们很容易:</p>
<pre><code>data_combined = data_combined.drop('d', axis=1)
data_combined = data_combined.loc[data_combined.index != 'c4']
</code></pre>
<p>然后我重新排序以得到你想要的结果:</p>
<pre><code>data_combined = data_combined.reset_index()
data_combined = data_combined[['a', 'b', 'c']]
data_combined = data_combined.fillna('')
a b c
0 a1 b1 c1
1 2a b2 c2
2 a3 c3
</code></pre>