我有一个看起来像这样的数据帧:
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
其中 column1
、 column2
、 column3
、 newCol
是列的名称A、B、C、D 是行的唯一值
我的问题是我不知道如何将column1
和column2
从新数据框中的列转换为行。
将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
。