ValueError:索引包含重复的条目,无法重新整形

时间:2015-08-03 10:50:04

标签: pandas pivot pivot-table

我尝试使用以下功能重塑我的pd数据帧:

 ar = ar.pivot(index='Received', columns='Merch Ref', values='acceptance_rate')

数据集如下所示:

     Merch Ref            Received  acceptance_rate
0           SF 2014-08-28 15:38:00                0
1           SF 2014-08-28 15:44:00                0
2           SF 2014-08-28 16:04:00                0
3           WF 2014-08-28 16:05:00                0
4           WF 2014-08-28 16:07:00                0
5           SF 2014-08-28 16:34:00                0
6           SF 2014-08-28 16:55:00                0
7           BF 2014-08-28 17:59:00                0
8           BF 2014-08-29 15:05:00                0
9           SF 2014-08-29 21:25:00                0
10          SF 2014-08-30 10:29:00                0
...

我想获得的是:

                      SF WF BF 
2014-08-28 15:38:00    0  1  0
2014-08-28 15:44:00    0  1  0
2014-08-28 16:04:00    0  0  1
2014-08-28 16:05:00    1  1  0
2014-08-28 16:07:00    0  0  1
2014-08-28 16:34:00    1  1  0
2014-08-28 16:55:00    1  1  0
2014-08-28 17:59:00    0  1  0
2014-08-29 15:05:00    0  0  1
2014-08-29 21:25:00    0  0  1 
2014-08-30 10:29:00    0  1  0

然而,我收到错误:

 ValueError: Index contains duplicate entries, cannot reshape

这是因为我同时下了一些订单。有没有办法对这些订单进行汇总/汇总?

3 个答案:

答案 0 :(得分:0)

正如您所指出的那样,错误发生在Received中的x和Merch Ref中的y对(x,y)的重复中。

如果您希望按sum汇总

ar.pivot_table(index='Received', columns='Merch Ref',
               values='acceptance_rate', aggfunc=np.sum)

。默认聚合函数为mean。也就是说,

ar.pivot_table(index='Received', columns='Merch Ref',
               values='acceptance_rate')

,将旋转表格,所有具有相同(x,y)对的条目将与np.mean函数聚合在一起。

备注:我最初收到相同的错误,但在迭代完(x,y)对后,我没有发现任何重复。事实证明,其中一些对具有(nannan)形式,并且在迭代过程中被省略。因此,对于尝试调试他们认为唯一对的内容的其他用户,请考虑使用nanpd.isnull检查pd.notnull

答案 1 :(得分:0)

尝试删除重复项:

ar = ar.drop_duplicates(['Received','Merch Ref'])

它应该工作

答案 2 :(得分:0)

您应该使用crosstab

示例:

.AddEnvironmentVariables();