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

Hap*_*yPy 6 python pandas

df=pd.DataFrame(index=['x','y'], data={'a':[1,2],'b':[3,4]})
Run Code Online (Sandbox Code Playgroud)

如何将列名转换为列的值?这是我想要的输出

   c1  c2
x  1   a
x  3   b
y  2   a
y  4   b
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 4

您可以使用:

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
Run Code Online (Sandbox Code Playgroud)

或者:

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
Run Code Online (Sandbox Code Playgroud)