首页 > 解决方案 > 如何旋转和扩展数据框列

问题描述

我有以下数据框:

 name      precision      recall
    a         0.28        0.23    
    b         1.00        0.00    
    a         0.31        0.23    
    b         0.25        0.00   

所需的输出是:

a_precision   a_recall    b_precision   b_recall
   0.28         0.23        1.00         0.00
   0.31         0.23        0.25         0.00

知道如何执行这种类似枢轴的操作吗?

在我的数据集中,我有 5 个不同的名称(a、b、c、d、e),每第六行又以名称 a、b... 开始,依此类推。除了精度和召回率之外,我还有另一列名为 f1_score。因此,该解决方案可能应该适用于不同的数据框模式。

我期待着你将如何解决这个问题。

标签: pythonpandas

解决方案


您可以使用pivot一些修改数据框:

df2 = (df.assign(group=df.groupby('name').cumcount()) # get position across groups
         .pivot(index='group', columns='name')
      )
df2.columns = ['%s_%s' % (b,a) for (a,b) in df2.columns]
df2.sort_index(axis=1)

输出:

       a_precision  a_recall  b_precision  b_recall
group                                              
0             0.28      0.23         1.00       0.0
1             0.31      0.23         0.25       0.0

推荐阅读