如何使用concatenate和pivot表以特定形式表示pandas数据帧中的数据

时间:2017-08-11 03:21:45

标签: python python-3.x pandas dataframe sklearn-pandas

我有两个pandas数据帧作为输出:

   Modeling Methods(Overall Themes & FR)  RMSE (CV=10)
0                                 Lasso     -0.559883
1                                   SVR     -0.642521
2                                 NuSVR     -0.602523
3             GradientBoostingRegressor     -0.773394
4                 RandomForestRegressor     -0.866475

     Modeling Methods(4 Themes & FR)  RMSE (CV=10)
   0                           Lasso     -0.559883
   1                             SVR     -0.655144
   2                           NuSVR     -0.639760
   3       GradientBoostingRegressor     -0.860851
   4           RandomForestRegressor     -0.818647

我想以下列形式加入这两个数据框:

                                            Lasso   SVR   NuSVR      GradientBoostingRegressor   RandomForestRegressor
0   Modeling Methods(4 Themes & FR)        -0.55   -0.65  -0.63          -0.86                     -0.81
1   Modeling Methods(Overall Themes & FR)  -0.55   -0.64  -0.60          -0.77                     -0.86

我使用了以下代码,但结果不符合预期

frames = [factor_flood_response, only_flood_response, Theme4_flood_response,Overall_Theme_flood_response]
result = pd.concat(frames, axis=0, join='outer')
print(result)

1 个答案:

答案 0 :(得分:0)

让我们试试这个:

pd.concat([i.set_index(i.columns[0]).rename(columns={'RMSE (CV=10)':i.columns[0]}).T for i in [df1,df2]])

输出:

                                         Lasso       SVR     NuSVR  \
Modeling Methos(Overall Themes & FR) -0.559883 -0.642521 -0.602523   
Modeling Methods(4 Themes & FR)      -0.559883 -0.655144 -0.639760   

                                      GradientBoostingRegressor  \
Modeling Methos(Overall Themes & FR)                  -0.773394   
Modeling Methods(4 Themes & FR)                       -0.860851   

                                      RandomForestRegressor  
Modeling Methos(Overall Themes & FR)              -0.866475  
Modeling Methods(4 Themes & FR)                   -0.818647  

使用list comprehension和set_index,重命名一些列,我们可以得到上面的结果:

print(df1)

  Modeling Methos(Overall Themes & FR)  RMSE (CV=10)
0                                Lasso     -0.559883
1                                  SVR     -0.642521
2                                NuSVR     -0.602523
3            GradientBoostingRegressor     -0.773394
4                RandomForestRegressor     -0.866475

print(df2)

  Modeling Methods(4 Themes & FR)  RMSE (CV=10)
0                           Lasso     -0.559883
1                             SVR     -0.655144
2                           NuSVR     -0.639760
3       GradientBoostingRegressor     -0.860851
4           RandomForestRegressor     -0.818647