df=pd.DataFrame(index=['x','y'], data={'a':[1,2],'b':[3,4]})
如何将列名转换为列的值?这是我想要的输出
c1 c2
x 1 a
x 3 b
y 2 a
y 4 b
答案 0 :(得分:3)
您可以使用:
print (df.T.unstack().reset_index(level=1, name='c1')
.rename(columns={'level_1':'c2'})[['c1','c2']])
c1 c2
x 1 a
x 3 b
y 2 a
y 4 b
或者:
print (df.stack().reset_index(level=1, name='c1')
.rename(columns={'level_1':'c2'})[['c1','c2']])
c1 c2
x 1 a
x 3 b
y 2 a
y 4 b
答案 1 :(得分:3)
试试这个:
In [279]: df.stack().reset_index().set_index('level_0').rename(columns={'level_1':'c2',0:'c1'})
Out[279]:
c2 c1
level_0
x a 1
x b 3
y a 2
y b 4
答案 2 :(得分:2)
In [62]: (pd.melt(df.reset_index(), var_name='c2', value_name='c1', id_vars='index')
.set_index('index'))
Out[62]:
c2 c1
index
x a 1
y a 2
x b 3
y b 4
答案 3 :(得分:1)