<p><a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.add.html" rel="nofollow noreferrer">^{<cd1>}</a>将执行数据帧对齐,如果索引尚未对齐,则该对齐将涉及排序操作。可以在添加之前或之后使<code>df2</code>{a2}{<cd4>}</p>
<pre><code>df1 = df1.add(df2, fill_value=0).reindex_like(df1)
</code></pre>
<p>或</p>
<pre><code>df1 = df1.add(df2.reindex_like(df1), fill_value=0)
</code></pre>
<p>*注意<code>reindex_like</code>将对齐列和索引,如果只想对齐索引,可以使用<a href="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.reindex.html" rel="nofollow noreferrer">^{<cd6>}</a>:</p>
<pre><code>df1 = df1.add(df2, fill_value=0).reindex(df1.index)
</code></pre>
<p>或</p>
<pre><code>df1 = df1.add(df2.reindex(df1.index), fill_value=0)
</code></pre>
<hr/>
<p>或者,可以从两个索引的<code>df1.index</code>创建一个<a href="https://pandas.pydata.org/docs/reference/api/pandas.CategoricalDtype.html" rel="nofollow noreferrer">^{<cd7>}</a>,然后<code>sort</code>操作生成正确的顺序:</p>
<pre><code># Create CategoricalDtype
cat_dtype = pd.CategoricalDtype(df1.index, ordered=True)
# Change index dtypes to categorical
df1.index = df1.index.astype(cat_dtype)
df2.index = df2.index.astype(cat_dtype)
# Add aligns correctly based on Categorical Ordering
df1 = df1.add(df2, fill_value=0)
</code></pre>
<hr/>
<p>所有选项都产生<code>df1</code>:</p>
<pre><code> Amount
Buckets
3M 1.0
6M 2.0
9M 3.0
1Y 8.0
2Y 10.0
3Y 12.0
</code></pre>