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

Blu*_*oon 7 pivot pivot-table pandas

我正在尝试使用以下函数重塑我的pd数据帧:

 ar = ar.pivot(index='Received', columns='Merch Ref', values='acceptance_rate')
Run Code Online (Sandbox Code Playgroud)

数据集如下所示:

     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
...
Run Code Online (Sandbox Code Playgroud)

我想得到的是:

                      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
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误:

 ValueError: Index contains duplicate entries, cannot reshape
Run Code Online (Sandbox Code Playgroud)

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

小智 1

正如您所识别的,错误是由于 x inReceived和 y in的 (x, y) 对中的重复项而发生的Merch Ref

如果您想届时sum聚合

ar.pivot_table(index='Received', columns='Merch Ref',
               values='acceptance_rate', aggfunc=np.sum)
Run Code Online (Sandbox Code Playgroud)

。默认聚合函数是mean。那是,

ar.pivot_table(index='Received', columns='Merch Ref',
               values='acceptance_rate')
Run Code Online (Sandbox Code Playgroud)

,将对表进行透视,并且具有相同 (x, y) 对的所有条目将通过该np.mean函数进行聚合。

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