擅长:python、mysql、java
<p>假设您有任意数量的数据帧<code>dfA</code>、<code>dfB</code>、<code>dfC</code>,等等。您想合并它们,但它们的大小不同。最基本的方法是连接它们:</p>
<pre><code>df = pd.concat([dfA, dfB, dfC], axis=1)
</code></pre>
<p>但是如果数据帧的大小不同,则会丢失行。如果不关心保留哪些行,可以直接删除缺少值的行:</p>
<pre><code>df.dropna()
</code></pre>
<p>但是如果您特别想使用每个数据帧的最后<em>N</em>行,其中<em>N</em>是最小数据帧的长度,您需要做更多的工作。但我会等着看你是不是想要这样。你知道吗</p>
<hr/>
<p><strong>旧答案:</strong></p>
<p>合并可以比这简单得多。使用<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.merge.html" rel="nofollow noreferrer">^{<cd4>}</a>:</p>
<pre><code>pd.merge(dfY, dfM[-len(dfY):].reset_index(),
suffixes=['_y', '_m'], left_index=True, right_index=True)
</code></pre>
<ul>
<li><code>dfM[-len(dfY):]</code>获取<code>dfM</code>的最后<em>N</em>行,其中<em>N</em>是<code>dfY</code>的长度。你知道吗</li>
<li><code>.reset_index()</code>使<code>dfM</code>的子集的索引从0开始,因此它可以正确地与<code>dfY</code>对齐。你知道吗</li>
<li><code>suffixes=['_y', '_m']</code>保持列名不同。如果你愿意的话,你可以重新命名。你知道吗</li>
</ul>