擅长:python、mysql、java
<p>@jezrael的答案很好,但是如果对于一个不熟悉<code>xs</code>(像我一样)的人来说,我只是想出了一个更复杂的方法来首先获得<code>s</code>:</p>
<pre><code>s= df1.loc[:, idx[:, 'close']]
s.columns = s.columns.droplevel(1)
s = s.unstack().rename('close')
</code></pre>
<p>当然,这三行字的说法看起来没那么吸引人D
然后我们可以用同样的方法得到df1:</p>
<pre><code>df2 = (df2.drop('close', 1)
.reset_index()
.join(s, on=['contract', 'index'])
.set_index('index')
.rename_axis(None))
</code></pre>