将熊猫数据帧转换为另一个布局



我有一个看起来像这样的数据帧:

  column1  column2  column3
0       A    0.020     0.76
1       B    0.045     1.30
2       C    0.230     0.32
3       D    0.130     0.67

我想修改这个数据帧结构,使其看起来像这样:

column1  newCol 
A        column2    0.020
         column3    0.760
B        column2    0.045
         column3    1.300
C        column2    0.230
         column3    0.320
D        column2    0.130
         column3    0.670
Name: value, dtype: float64

其中 column1column2column3newCol 是列的名称A、B、C、D 是行的唯一值

我的问题是我不知道如何将column1column2从新数据框中的列转换为行。

column1设置为索引、堆栈并重命名索引列:

>>> res = df.set_index('column1').stack()
>>> res.index.names = ['column1', 'newCol']
>>> res
column1  newCol 
A        column2    0.020
         column3    0.760
B        column2    0.045
         column3    1.300
C        column2    0.230
         column3    0.320
D        column2    0.130
         column3    0.670
dtype: float64

使用 melt + set_index + sort_index -

df.melt('column1', var_name='newCol')
  .set_index(['column1', 'newCol'])
  .sort_index().value
column1  newCol 
A        column2    0.020
         column3    0.760
B        column2    0.045
         column3    1.300
C        column2    0.230
         column3    0.320
D        column2    0.130
         column3    0.670
Name: value, dtype: float64

适用于v0.20及以上版本。对于旧版本,请改用pd.melt

最新更新