簡體   English   中英

Pandas 數據框將列轉置為行

[英]Pandas dataframe transpose columns into rows

我有一個數據框如下:

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

我希望這個數據框得到如下轉置:

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

我正在嘗試使用df.melt()方法(如下所示)。 但沒有運氣

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

但是上述方法沒有給出正確的結果。 \

如果我嘗試使用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]

然后整個df_n變成一個object

我在這里缺少什么。

IIUC,只需刪除無用的列並轉置:

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

輸出:

       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

轉置是一個非常基本的操作。 所以你可以在很多圖書館找到它

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

會成功的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM