将数据堆叠到具有两个标题的行中,并且第一个标题不合并

我有如下 xlsx 数据。


      Q1 Q1 Q1 Q2 Q2 Q2

      V1 V2 V3 V1 V2 V3 

 Ram  11 19 10 10 12 14 

 Syam 11 19 10 10 12 14

我必须将其转换为以下格式。


        V1 V2 V3

 Ram Q1 11 19 10

Syam Q1 11 19 10

 Ram Q2 10 12 14

Syam Q2 10 12 14

我无权更改源格式。我已经尝试过如下。


df=pd.read_excel(path,sheet_name='Sheet1',header=[0,1],index=[0,1])


df.stack(level=0)

但它不起作用,因为第一行单元格不是合并格式。寻找任何 pandas 函数来实现此目的


一只萌萌小番薯
浏览 108回答 2
2回答

九州编程

index_col=0读入数据时可以设置。然后执行操作:.stack(0)和reset_index()。传递0in.stack(0)确保您将Vs 放在列上,将Qs 放在行上,反之亦然stack(1),因为您的列中有两行的多重索引:df = (pd.read_excel('Desktop\Book1.xlsx',header=[0,1], index_col=0).stack(0).reset_index()        .rename({'level_0' : '', 'level_1' : ''}, axis=1))dfOut[1]:              V1  V2  V30   Ram  Q1  11  19  101   Ram  Q2  10  12  142  Syam  Q1  11  19  103  Syam  Q2  10  12  14

桃花长相依

您好,欢迎来到 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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python