[英]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.