我有一个pandas数据框架,用于存储不同参数配置的不同指标的值,例如:
index | param1 | params2 | metric | score |
0 | xx | yy | XXX | 100 |
1 | xx | yy | YYY | 50 |
2 | xx | yy | ZZZ | 20 |
3 | aa | bb | XXX | 200 |
4 | aa | bb | YYY | 50 |
5 | aa | bb | ZZZ | 10 |
我想把它转换成:
index | param1 | params2 | XXX | YYY | ZZZ |
0 | xx | yy | 100 | 50 | 20 |
1 | aa | bb | 200 | 50 | 10 |
我试着用pivot来做,也就是
df.pivot(index='index',columns=['metric','param1','param2'],values='score')
但结果不是我想要的。此外,我对聚合这些值不感兴趣,只是重塑它们。
您可以使用pd.pivot_table()
:
df.set_index('index',inplace=True)
pd.pivot_table(df,index=['param1','params2'],columns='metric',values='score').reset_index()
打印:
metric param1 params2 XXX YYY ZZZ
0 aa bb 200 50 10
1 xx yy 100 50 20
可以使用
df = pd.DataFrame({
'index': [0, 1, 2, 3, 4, 5],
'param1': ['xx', 'xx', 'xx', 'aa', 'aa', 'aa'],
'param2': ['yy', 'yy', 'yy', 'bb', 'bb', 'bb'],
'metric': ['XXX', 'YYY', 'ZZZ', 'XXX', 'YYY', 'ZZZ'],
'score': [100, 50, 20, 200, 50, 10]
})
df.pivot_table(index=['param1', 'param2'],columns='metric',values='score').reset_index()