Pandas pivot产生" ValueError:索引包含重复的条目,不能重塑"

时间:2017-10-02 15:23:49

标签: python pandas dataframe duplicates pivot

我有一个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

如何处理?

2 个答案:

答案 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