繁体   English   中英

使用列名的 Pandas pivot_table

[英]Pandas pivot_table using columns names

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

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()来做到这一点,还是我走错了方向?

聚合mean ,然后通过T转置:

df = df.groupby('tag').mean().T
print (df)
tag        T1      T2
score1    7.5    15.0
score2   75.0   150.0
score3  750.0  1500.0

是的,您可以像这样使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM