回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有这些数据帧:</p>
<pre><code>rec = pd.DataFrame({'batch': ["001","002","003"],
'A': [1, 2, 3],
'B': [4, 5, 6]})
ing1 = pd.DataFrame({'batch': ["002","003","004"],
'C': [12, 13, 14],
'D': [15, 16, 17],
'E': [18, 19, 10]})
ing2 = pd.DataFrame({'batch': ["001","011","012"],
'C': [20, 21, 22],
'D': [23, 24, 25],
'F': [26, 27, 28]})
</code></pre>
<p><strong>我想要的是以下合并数据集,其中具有相同标签的列将被稍后合并的日期集覆盖,并为不存在的标签创建新列</p>
<pre><code> batch A B C D E F
0 001 1 4 20 23 NaN 26.0
1 002 2 5 12 15 18.0 NaN
2 003 3 6 13 16 19.0 NaN
</code></pre>
<p>我已尝试首先将<code>rec</code>与<code>ing1</code>合并:</p>
<pre><code>final = pd.merge(rec, ing1, how ='left', on='batch', sort=False)
</code></pre>
<p>中间结果:</p>
<pre><code> batch A B C D E
0 001 1 4 NaN NaN NaN
1 002 2 5 12.0 15.0 18.0
2 003 3 6 13.0 16.0 19.0
</code></pre>
<p>然后,我将第二次与<code>ing2</code>合并,以获得C、D和E列中缺少的信息</p>
<pre><code>final = pd.merge(final, ing2, how ='left', on='batch', sort=False)
</code></pre>
<p>结果(不符合预期):</p>
<pre><code> batch A B C_x D_x E C_y D_y F
0 001 1 4 NaN NaN NaN 20.0 23.0 26.0
1 002 2 5 12.0 15.0 18.0 NaN NaN NaN
2 003 3 6 13.0 16.0 19.0 NaN NaN NaN
</code></pre>
<p>我还尝试了<code>merge</code>、<code>concat</code>和<code>combinefirst</code>,但是它们似乎在将第二个表中的数据附加到主表的地方运行。我能想到的唯一方法是将数据帧拆分为需要从<code>ing1</code>提取数据的行和需要<code>ing2</code>提取数据的行,然后将它们彼此附加到最后的数据集</p>