转置Pandas DataFrame并将列标题更改为列表

Ham*_*med 8 python pandas

我有以下Pandas子数据帧

         col1  name1  name2
522      a     10     0.2
1021     b     72    -0.1
Run Code Online (Sandbox Code Playgroud)

col1没有重复.我想转置数据框并将列标题更改为col1值.理想情况下,输出应该是这样的

Variable  a     b
name1     10    72
name2     0.2  -0.1
Run Code Online (Sandbox Code Playgroud)

很容易转换df并将第一列标记为Variable

df.transpose().reset_index().rename(columns={'index':'Variable'})
Run Code Online (Sandbox Code Playgroud)

结果DF将原始DF的索引作为列标题(并且它们没有排序,并且不从我的数据中的1开始!)如何更改列名的其余部分?

jez*_*ael 14

需要set_index+ T:

df = df.set_index('col1').T
print (df)
col1      a     b
name1  10.0  72.0
name2   0.2  -0.1

df = df.set_index('col1').T.rename_axis('Variable').rename_axis(None, 1)
print (df)
             a     b
Variable            
name1     10.0  72.0
name2      0.2  -0.1
Run Code Online (Sandbox Code Playgroud)

如果需要来自索引的列:

df = df.set_index('col1').T.rename_axis('Variable').rename_axis(None, 1).reset_index()
print (df)
  Variable     a     b
0    name1  10.0  72.0
1    name2   0.2  -0.1
Run Code Online (Sandbox Code Playgroud)