<p>首先,最好将索引设置为<code>['Month', 'Roll no.', 'Student Name']</code>。这将大大简化您的concat语法,并确保您与学生的名字匹配。在</p>
<pre><code>df.set_index('Student Name', append=True, inplace=True)
</code></pre>
<p>其次,我建议您以不同的方式来执行此操作,并在迭代期间存储<code>df</code>数据帧(Q1/Q2/Q3值),同时引用最高列级别的名称(例如:“IS”、“CC”)。dict将非常适合于此,pandas确实接受dict作为<code>pd.concat</code>的参数</p>
^{pr2}$
<p>现在,在循环之后,你的结论是:</p>
<pre><code>df_dict
In [10]: df_dict
Out[10]:
{'CC': Q1 Q2 Q3
Month Roll No Student Name
2016-08-01 0 Save Mithil Vinay 0.0 0.0 0.0
1 Abraham Ancy Chandy 6.0 5.0 5.0
2 Barabde Pranjal Sanjiv 7.0 5.0 5.0
3 Bari Siddhesh Kisho 8.0 5.0 3.0
4 Barretto Cleon Domnic 1.0 5.0 4.0,
'IS': Q1 Q2 Q3
Month Roll No Student Name
2016-08-01 0 Save Mithil Vinay 0.0 0.0 0.0
1 Abraham Ancy Chandy 8.0 5.0 5.0
2 Barabde Pranjal Sanjiv 7.0 5.0 4.0
3 Bari Siddhesh Kisho 8.0 4.0 3.0
4 Barretto Cleon Domnic 2.0 3.0 4.0}
</code></pre>
<p>所以现在如果你吃海螺,熊猫会做得很好,而且会自动为你:</p>
<pre><code>In [11]: big_df = pd.concat(df_dict, axis=1)
big_df
Out[11]:
</code></pre>
<p><a href="https://i.stack.imgur.com/KNnBo.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/KNnBo.png" alt="enter image description here"/></a></p>
<hr/>
<p>如果您真的想迭代地完成它,您应该在使用big_df进行concat之前预先准备好新的多级(“CC”)</p>
<pre><code>df.columns = pd.MultiIndex.from_tuples([('IS', x) for x in df.columns])
# Then you can concat, give the same result as the picture above.
pd.concat([big_df, df], axis=1)
</code></pre>