我尝试使用以下功能重塑我的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
这是因为我同时下了一些订单。有没有办法对这些订单进行汇总/汇总?
答案 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)对后,我没有发现任何重复。事实证明,其中一些对具有(nan
,nan
)形式,并且在迭代过程中被省略。因此,对于尝试调试他们认为唯一对的内容的其他用户,请考虑使用nan
或pd.isnull
检查pd.notnull
。
答案 1 :(得分:0)
尝试删除重复项:
ar = ar.drop_duplicates(['Received','Merch Ref'])
它应该工作
答案 2 :(得分:0)