简体   繁体   English

Pandas 数据框将列转置为行

[英]Pandas dataframe transpose columns into rows

I have a dataframe as follows:我有一个数据框如下:

Variable  Params   Min_4    Min_3   Min_2   Min_1   Min_0   1_Min   2_Min   3_Min   Max_4
  Scores  Scores   4.0       3.0     2.0     1.0     0.0     1.0     2.0     3.0    4.0
  Phys     MAP     160.0    130.0   110.0    NaN     70.0    NaN     50.0    NaN    49.0

I want this dataframe to get transposed like below:我希望这个数据框得到如下转置:

Scores   Values
  4.0      160
  3.0      130
  2.0      110
  1.0      NaN
  0.0      70
  1.0      NaN
  2.0      50
  3.0      NaN
  4.0      49

I am tryting with df.melt() approach (shown below).我正在尝试使用df.melt()方法(如下所示)。 But with no luck但没有运气

df_MAP_S = df_MAP.melt(id_vars=['Params','Variable'],var_name = 'Scores_lvl',value_name='Scores_Val')

But the above approach is not giving the correct result.但是上述方法没有给出正确的结果。 \ \

If I try using df.set_index().T as belows如果我尝试使用df.set_index().T如下

cols = df_MAP.columns.tolist()
cols = cols[3:]
df_MAP_S = df_MAP.set_index(cols).T
df_n = df_MAP_S.iloc[:-3]

Then this whole df_n becomes an object然后整个df_n变成一个object

What I am missing here.我在这里缺少什么。

IIUC, just drop the useless columns and transpose: IIUC,只需删除无用的列并转置:

df.drop(columns=['Variable', 'Params']).set_axis(['Scores', 'Values']).T

output:输出:

       Scores  Values
Min_4     4.0   160.0
Min_3     3.0   130.0
Min_2     2.0   110.0
Min_1     1.0     NaN
Min_0     0.0    70.0
1_Min     1.0     NaN
2_Min     2.0    50.0
3_Min     3.0     NaN
Max_4     4.0    49.0

Transpose is a very basic operation.转置是一个非常基本的操作。 So you can find it in many libraries所以你可以在很多图书馆找到它

df = pd.DataFrame([[1, 2, 4], [5, 6, 7]], index=['a', 'b'], columns=['c1', 'c2', 'c3'])
df.T

will do the trick会成功的

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM