使用列名作为pandas中的新属性

Los*_*st1 4 python reshape pandas

我有以下数据结构

Date         Agric  Food 
01/01/1990    1.3   0.9  
01/02/1990    1.2   0.9 
Run Code Online (Sandbox Code Playgroud)

我想把它转换成格式

Date        Sector  Beta
01/01/1990  Agric   1.3
01/02/1990  Agric   1.2
01/01/1990  Food    0.9
01/02/1990  Food    0.9
Run Code Online (Sandbox Code Playgroud)

虽然我确信我能以复杂的方式做到这一点,有没有办法在几行代码中做到这一点?

Sco*_*ton 5

使用set_indexstack:

df.set_index('Date').rename_axis('Sector',axis=1).stack()\
  .reset_index(name='Beta')
Run Code Online (Sandbox Code Playgroud)

输出:

         Date Sector  Beta
0  01/01/1990  Agric   1.3
1  01/01/1990   Food   0.9
2  01/02/1990  Agric   1.2
3  01/02/1990   Food   0.9
Run Code Online (Sandbox Code Playgroud)


piR*_*red 5

运用 pd.DataFrame.melt

df.melt('Date', var_name='Sector', value_name='Beta')

         Date Sector  Beta
0  01/01/1990  Agric   1.3
1  01/02/1990  Agric   1.2
2  01/01/1990   Food   0.9
3  01/02/1990   Food   0.9
Run Code Online (Sandbox Code Playgroud)