如何将列名转换为pandas中的列值 - python

时间:2016-07-07 09:27:18

标签: python pandas

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

4 个答案:

答案 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)

尝试:

df1 = df.stack().reset_index(-1).iloc[:, ::-1]
df1.columns = ['c1', 'c2']
df1

enter image description here