我有一个名为“bal”的数据框。它看起来像这样:
ano id unit period
business_id
9564 2012 302 sdasd anual
9564 2011 303 sdasd anual
2361 2013 304 sdasd anual
2361 2012 305 sdasd anual
...
我正在其上运行以下代码:
bal=bal.merge(bal.pivot(columns='ano', values='id'),right_index=True,left_index=True)
我的目的是将其变成这样:
ano id unit period 2006 2007 2008 2009 2010 \
business_id
72 2013 774 sdasd anual NaN NaN NaN NaN NaN
72 2012 775 sdasd anual NaN NaN NaN NaN NaN
74 2012 1120 sdasd anual NaN NaN NaN NaN NaN
119 2013 875 sdasd anual NaN NaN NaN NaN NaN
119 2012 876 sdasd anual NaN NaN NaN NaN NaN
...
当我编写代码时,我收到此错误:
ValueError: Index contains duplicate entries, cannot reshape
因此,为了避免重复,我添加了 drop_duplicates 行:
bal=bal.drop_duplicates()
bal=bal.merge(bal.pivot(columns='ano', values='id'),right_index=True,left_index=True)
当我运行代码时,瞧,我遇到了同样的问题:
ValueError: Index contains duplicate entries, cannot reshape
我做错了什么或者误解了什么吗?
EDIT
bal
是我使用以下代码从 SQL 创建的数据框:
bal=pd.read_sql('select * from table;',connection).set_index('business_id')[['ano','id','unit','period']]
奇怪的是,如果我限制 SQL 查询,它就可以正常工作:
bal=pd.read_sql('select * from table limit 1000;',connection).set_index('business_id')[['ano','id','unit','period']]
我认为这个问题可能与索引有很多重复项有关(正如您在上面的示例中看到的)。但是如果我print(bal.head(4))
在这个有限的球中,它看起来与上面看到的一模一样,但索引重复。