桃花长相依
您好,欢迎来到 StackOverflow!以下是我为此寻找解决方案所取得的进展。首先,应读取数据,例如将其Ram作为Syam索引列:df = pd.read_excel(path,sheet_name='Sheet1',header=[0,1],index_col=0)那么,你想要的方法是stack(重塑指南)In [52]: dfOut[52]: Q1 Q2 V1 V2 V3 V1 V2 V3 Ram 11 19 10 10 12 14 Syam 11 19 10 10 12 14In [53]: df.stack()Out[53]: Q1 Q2 Ram V1 11 10 V2 19 12 V3 10 14 Syam V1 11 10 V2 19 12 V3 10 14然而,在没有任何参数的情况下,它会堆叠列的最后一层,正如我们所看到的,这是V. 我们想要堆叠第一层,所以需要调用df.stack(0).然而,这样做时,会出现错误:ValueError: The name occurs multiple times, use a level number。对我来说,这看起来像是一个pandas侧面的错误。编辑: 经过一番调查,我意识到我的级别df具有相同的名称:In [75]: df.columnsOut[75]:MultiIndex([(' Q1', ' V1'), (' Q1', ' V2'), (' Q1', ' V3'), (' Q2', ' V1'), (' Q2', ' V2'), (' Q2', ' V3')], names=[' ', ' '])由(4 个空格)组成 。相反,如果我们确保级别具有不同的名称:In [89]: df.columns.names = ['H1', 'H2']In [90]: dfOut[90]:H1 Q1 Q2H2 V1 V2 V3 V1 V2 V3Ram 11 19 10 10 12 14Syam 11 19 10 10 12 14那么我们就可以正确应用df.stack(0):In [91]: df.stack(0)Out[91]:H2 V1 V2 V3 H1Ram Q1 11 19 10 Q2 10 12 14Syam Q1 11 19 10 Q2 10 12 14