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