我有一个pandas表格式如下:
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
我需要创建一个这样的视图,将它转向像这样:
anger_metric roll yaw pitch
0 71.0991 14.6832 0.7009 22.5075
1 90.1341 4.8566 6.4458 -10.1930
这是我的代码:
df2= results.pivot(index='anger_metric', columns='metric_name', values='angle_value')
# results is the pnadas table/list
我收到以下错误:
ValueError: Index contains duplicate entries, cannot reshape
如何处理?
答案 0 :(得分:5)
尝试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
答案 1 :(得分:1)
使用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