如何在不丢失任何数据的情况下正确地旋转数据框?

How to pivot a dataframe correctly without losing any data?

我有以下 DataFrame:

model metric final_result score
Decision Tree F1 Pass 0.57346
Decision Tree accuracy Pass 0.76512
Decision Tree precision Pass 0.6346
Decision Tree recall Pass 0.66512
Decision Tree F1 Fail 0.57346
Decision Tree accuracy Fail 0.76512
Decision Tree precision Fail 0.6346
Decision Tree recall Fail 0.66512
RF F1 Pass 0.57346
RF accuracy Pass 0.76512
RF precision Pass 0.6346
RF recall Pass 0.66512
... ... ... ...

我想将 table 转换为以下格式:

Decision Tree Random Forest
final_result metric
Pass accuracy 0.76512 0.76512
precision 0.6346 0.6346
recall 0.66512 0.66512
F1 0.57436 0.57346
Fail accuracy 0.76512 0.76512
precision 0.6346 0.6346
recall 0.66512 0.66512
F1 0.57436 0.57346
... ... ... ...

我试过使用 pivot_table 函数来做到这一点:

pd.pivot_table(modelPerformance, values='score', index=['metric', 'Final Result'], columns='model')

然而,这给我留下了一个“压扁的”table,看起来像这样:

我很困惑,因为很难解释这个问题并在网上找到可能的解决方案,所以我希望这里有人能理解我的最终目标。

IIUC,使用pivot代替pivot_table

>>> df.pivot(['final_result', 'metric'], 'model', 'score')

model                   Decision Tree       RF
final_result metric                           
Fail         F1               0.57346      NaN
             accuracy         0.76512      NaN
             precision        0.63460      NaN
             recall           0.66512      NaN
Pass         F1               0.57346  0.57346
             accuracy         0.76512  0.76512
             precision        0.63460  0.63460
             recall           0.66512  0.66512