擅长:python、mysql、java
<p>您可以在第一个索引级别上使用对齐方式进行计算,手动向后分配第二个级别,然后进行连接和排序:</p>
<pre><code>import pandas as pd
idx = pd.IndexSlice
newdf = ((df.loc[idx[:, 'row1'], :].reset_index(level=1, drop=True)
*df.loc[idx[:, 'row3'], :].reset_index(level=1, drop=True))
.assign(idx1='row5')
.set_index('idx1', append=True)
.rename_axis([None, None]))
df = pd.concat([df, newdf]).sort_index()
</code></pre>
<h3>输出:</h3>
<pre><code> foo bar now
2018-01-01 row1 0 1 2
row2 3 4 5
row3 6 7 8
row4 9 10 11
row5 0 7 16
2018-01-02 row1 12 13 14
row2 15 16 17
row3 18 19 20
row4 21 22 23
row5 216 247 280
2018-01-03 row1 24 25 26
row2 27 28 29
row3 30 31 32
row4 33 34 35
row5 720 775 832
</code></pre>