<p><strong>选项1</strong><br/>
我不建议将不应该出现的东西移到索引中。<br/>
也就是说,如果索引级别的名称恰当,或者它们匹配,那么pandas就知道要加入什么了,那么就可以使用<code>pd.DataFrame.join</code>。在</p>
<pre><code>df.rename_axis('ord').join(s.rename_axis(['ord', 'vit']).rename('val'))
energy fat val
ord vit
1 vitamin-c 2000 28 0.0004
vitamin-a 2000 28 0.0150
2 vitamin-c 1900 17 0.0030
3 vitamin-d 2200 30 1.2000
vitamin-e 2200 30 1.0007
vitamin-c 2200 30 1.2020
4 vitamin-a 1750 15 0.0780
5 vitamin-b 1800 18 0.9650
6 vitamin-e 1600 12 1.9801
vitamin-c 1600 12 1.0011
</code></pre>
<hr/>
<p>多写几行以增加可读性</p>
^{pr2}$
<hr/>
<p><strong>选项2</strong><br/>
我们也可以将<code>pd.concat</code>与<code>loc</code>和{<cd4>}一起使用</p>
<pre><code>pd.concat(
[df.loc[s.index.get_level_values(0)].set_index(s.index), s.rename('val')],
axis=1
)
energy fat val
1 vitamin-c 2000 28 0.0004
vitamin-a 2000 28 0.0150
2 vitamin-c 1900 17 0.0030
3 vitamin-d 2200 30 1.2000
vitamin-e 2200 30 1.0007
vitamin-c 2200 30 1.2020
4 vitamin-a 1750 15 0.0780
5 vitamin-b 1800 18 0.9650
6 vitamin-e 1600 12 1.9801
vitamin-c 1600 12 1.0011
</code></pre>