簡體   English   中英

使用 Pandas 分組、轉置或什至 pivot_table

[英]Groupby, transpose, or even pivot_table with pandas

我有一個像這樣的數據幀:

    Model               R2       RMSE       Average_CV   Destiny
0   Ada Boost         0.5563    125.2569    0.426166        REC
1   Bagging Regressor 0.8363    76.0865     0.582675        REC
2   Random Forest     0.8378    75.7304     0.590683        REC
3   Decision Tree     0.8366    76.0053     0.460394        REC

我怎樣才能得到下面的輸出?

Model               Metrica         REC
Ada Boost           Average_CV      0.426166
                    R2              0.5563
                    RMSE            125.2569
Bagging Regressor   Average_CV      0.582675
                    R2              0.8363
                    RMSE            76.0865
Decision Tree       Average_CV      0.590683
                    R2              0.8366
                    RMSE            76.0053
Random Forest       Average_CV      0.460394
                    R2              0.8378
                    RMSE            75.7304 

我一直在嘗試分組、轉置甚至交叉表。 但我不知道如何獲得所需的輸出。

輸出中 Metrica 列中的行順序無關緊要。

謝謝

如果命運總是 Rec,你可以做一個簡單的melt 然后你可以設置和排序索引以獲得你想要的輸出。

df.melt(id_vars="Model", value_vars=["R2", "RMSE", "Average_CV"], var_name="Metrica")


                Model     Metrica       value
0           Ada_Boost          R2    0.556300
1   Bagging_Regressor          R2    0.836300
2       Random_Forest          R2    0.837800
3       Decision_Tree          R2    0.836600
4           Ada_Boost        RMSE  125.256900
5   Bagging_Regressor        RMSE   76.086500
6       Random_Forest        RMSE   75.730400
7       Decision_Tree        RMSE   76.005300
8           Ada_Boost  Average_CV    0.426166
9   Bagging_Regressor  Average_CV    0.582675
10      Random_Forest  Average_CV    0.590683
11      Decision_Tree  Average_CV    0.460394

通過設置/排序索引:

(df.melt(id_vars="Model", value_vars=["R2", "RMSE", "Average_CV"], var_name="Metrica")
    .set_index(["Model", "Metrica"])
    .sort_index())

                                   value
Model             Metrica               
Ada_Boost         Average_CV    0.426166
                  R2            0.556300
                  RMSE        125.256900
Bagging_Regressor Average_CV    0.582675
                  R2            0.836300
                  RMSE         76.086500
Decision_Tree     Average_CV    0.460394
                  R2            0.836600
                  RMSE         76.005300
Random_Forest     Average_CV    0.590683
                  R2            0.837800
                  RMSE         75.730400

如果您的命運有多個值,並且您希望每個值都有 1 列,那么您將不得不變得更有趣

(df.melt(id_vars="Model", value_vars=["R2", "RMSE", "Average_CV"], var_name="Metrica")
 .merge(df[["Model", "Destiny"]], on="Model")
 .pivot_table(index=["Model", "Metrica"], columns="Destiny", values="value")
 .rename_axis(None, axis=1)
)

                                     REC
Model             Metrica               
Ada_Boost         Average_CV    0.426166
                  R2            0.556300
                  RMSE        125.256900
Bagging_Regressor Average_CV    0.582675
                  R2            0.836300
                  RMSE         76.086500
Decision_Tree     Average_CV    0.460394
                  R2            0.836600
                  RMSE         76.005300
Random_Forest     Average_CV    0.590683
                  R2            0.837800
                  RMSE         75.730400

暫無
暫無

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

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