首页 > 解决方案 > Pandas pivot_table 使用列名

问题描述

我有一个看起来像这样的熊猫数据框:

ID, tag, score1
A1,  T1,     10
A1,  T1,      0
A1,  T2,     20 
A1,  T2,      0 
A2,  T1,     10
A2,  T1,     10
A2,  T2,     20
A2,  T2,     20

使用 pandas pivot_table 函数,我可以旋转表格以获得以下数据框:

df.pivot_table(index= 'tag' , columns='ID', values= 'score1' , aggfunc='mean')

     A1,  A2
T1    5,  10   
T2   10,  20

现在假设我的输入数据框有多个score列:

ID, tag, score1, score2, score3
A1,  T1,     10,    100,   1000
A1,  T1,      0,      0,      0
A1,  T2,     20,    200,   2000    
A1,  T2,      0,      0,      0     
A2,  T1,     10,    100,   1000
A2,  T1,     10,    100,   1000
A2,  T2,     20,    200,   2000
A2,  T2,     20,    200,   2000

我正在寻找一种方法来pivot获取数据以获得以下结果:

df.pivot_table(index= ??? , columns='ID', values= ??? , aggfunc='mean').round(-3)

         A1,   A2
score1  7.5,   15   
score2   75,  150
score3  750, 1500

这次我不想使用列的值进行透视,而是直接使用多个列名。

有没有办法做到这一点,pivot_table()还是我走错了方向?

标签: pythonpandasdataframepivot-table

解决方案


是的,你可以pivot_table这样使用:

df1.pivot_table(columns='ID', aggfunc='mean')

输出:

ID          A1      A2
 score1    7.5    15.0
 score2   75.0   150.0
 score3  750.0  1500.0

推荐阅读