I have a pandas table formatted as following:
anger_metric metric_name angle_value
0 71.0991 roll 14.6832
1 71.0991 yaw 0.7009
2 71.0991 pitch 22.5075
3 90.1341 roll 4.8566
4 90.1341 yaw 6.4458
5 90.1341 pitch -10.1930
I need to create a view of this that pivots it to sth like this:
anger_metric roll yaw pitch
0 71.0991 14.6832 0.7009 22.5075
1 90.1341 4.8566 6.4458 -10.1930
Here is my code:
df2= results.pivot(index='anger_metric', columns='metric_name', values='angle_value')
# results is the pnadas table/list
I get the following error:
ValueError: Index contains duplicate entries, cannot reshape
How to handle this?
Try pivot_table
:
df
anger_metric metric_name angle_value
0 71.0991 roll 14.6832
1 71.0991 yaw 0.7009
2 71.0991 pitch 22.5075
3 90.1341 roll 4.8566
4 90.1341 yaw 6.4458
5 90.1341 pitch -10.1930
result = df.pivot_table(index='anger_metric',
columns='metric_name',
values='angle_value')
result.columns.name = None
result
pitch roll yaw
anger_metric
71.0991 22.5075 14.6832 0.7009
90.1341 -10.1930 4.8566 6.4458
By using unstack
df.groupby(['anger_metric','metric_name'])['angle_value'].sum().unstack(-1)# you can using `mean` instead of `sum`
Out[433]:
metric_name pitch roll yaw
anger_metric
71.0991 22.5075 14.6832 0.7009
90.1341 -10.1930 4.8566 6.4458
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With