首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python / Pandas - drop_duplicates ValueError

Python / Pandas - drop_duplicates ValueError
EN

Stack Overflow用户
提问于 2017-08-23 20:06:00
回答 3查看 1.5K关注 0票数 2

我有一张很大的数据。当我运行:df=df.drop_duplicates()时,我得到以下错误:

代码语言:javascript
复制
ValueError: Buffer has wrong number of dimensions (expected 1, got 2)

如果我运行一个df.loc[:10].drop_duplicates(),它已经有错误了

有人知道是什么导致的吗?

编辑

dataframe如下所示:

代码语言:javascript
复制
                                                  Razao_social  Razao_social  \
business_id                                                                    

17                                             MULTIGRAIN S.A.     Sao Paulo   
17                                             MULTIGRAIN S.A.     Sao Paulo   
17                                             MULTIGRAIN S.A.     Sao Paulo   
17                                             MULTIGRAIN S.A.     Sao Paulo   
17                                             MULTIGRAIN S.A.     Sao Paulo   
17                                             MULTIGRAIN S.A.     Sao Paulo   
38           BRASILAGRO - COMPANHIA BRASILEIRA DE PROPRIEDA...     Sao Paulo   
38           BRASILAGRO - COMPANHIA BRASILEIRA DE PROPRIEDA...     Sao Paulo   
71                                    SECURITAS GARANTIAS S.A.     Sao Paulo   
71                                    SECURITAS GARANTIAS S.A.     Sao Paulo   
71                                    SECURITAS GARANTIAS S.A.     Sao Paulo   
71                                    SECURITAS GARANTIAS S.A.     Sao Paulo   
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-23 22:02:45

在不了解更多数据的情况下,我要给出一些一般性的想法:-熊猫0.18 (https://github.com/pandas-dev/pandas/issues/13393)中有一个已知的错误,它导致了包含datetime64数据类型的MultiIndexes的缓冲区值错误。是这种类型的列之一吗?-您的列中是否有重复的名称?我知道这是不应该发生的,但事实确实如此。-您需要在所有列中查找重复项,还是列的子集就足够了?尝试在方法调用中使用subset=选项。

Vico的答案可能会很有帮助,但是对于一个非常大的dataframe,对初始数据和删除重复的数据进行转置可能会比分配的资源更多。

票数 2
EN

Stack Overflow用户

发布于 2018-11-08 12:50:29

另一种解决这个问题的方法是稀疏列.请参阅下面的错误:

代码语言:javascript
复制
n = 10000
df = pd.DataFrame({'a': np.random.choice(n*2, n),
          'b': np.random.choice(10, n),
          'c': np.random.choice(4, n),
          'd': np.random.choice(int(n/2), n),
          'e': np.random.choice(int(n/100), n)})
df_dummies = pd.get_dummies(df, columns=['b', 'c'], sparse=True)
df_dummies.drop_duplicates()

奇怪的是,df_dummies.to_dense()解决不了你的问题--用sparse=False来重新创建你的假人。

为了检查重复列(其他答案所建议的问题),您可以使用以下代码片段:

代码语言:javascript
复制
df.columns.duplicated()
票数 1
EN

Stack Overflow用户

发布于 2018-12-19 00:53:49

我在非常大的dataframe中遇到了同样的问题,然后通过创建临时列来解决这个问题,该列将所有键列连接在一个字符串中,然后根据该唯一添加的列删除重复,然后在删除复制后删除这个临时列。

代码语言:javascript
复制
df['concatenated_all'] = df['col1'].astype(str)+'_'+df['col2'].astype(str)+'_'+df['col3'].astype(str)+'_'+df['col4'].astype(str)+'_'+df['coln'].astype(str)

df = df.drop_duplicates(subset='concatenated_all', keep="last")

df = df.drop(['concatenated_all'], axis=1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45848443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档