ValueError:groupby Pandas 中的“无法从重复的轴重新索引”

Posted

技术标签:

【中文标题】ValueError:groupby Pandas 中的“无法从重复的轴重新索引”【英文标题】:ValueError: "cannot reindex from a duplicate axis" in groupby Pandas 【发布时间】:2020-06-01 20:03:41 【问题描述】:

我的数据框如下所示:

SKU # GRP CATG PRD 0 54995 9404000 4040 99999 1 54999 9404000 4040 99999 2 55037 9404000 4040 1556894 3 55148 9404000 4040 1556894 4 55254 9404000 4040 1556894 5 55291 9404000 4040 1556894 6 55294 9404000 4040 1556895 7 55445 9404000 4040 1556895 8 55807 9404001 4040 1556896 9 49021 9404002 4040 1556897 10 49035 9404002 4040 1556897 11 27538 9404000 4040 1556898 12 27539 9404000 4040 1556899 13 27540 9404000 4040 1556894 14 27542 9404000 4040 1556900 15 27543 9404000 4040 1556900 16 27544 9404003 4040 1556901 17 27546 9404004 4040 1556902 18 99111 9404005 4040 1556903 19 99112 9404006 4040 1556904 20 99113 9404007 4040 1556905 21 99116 9404008 4040 1556906 22 99119 9404009 4040 1556907 23 99122 94040010 4040 1556908 24 99125 94040011 4040 1556909 25 86007 94040012 4040 1556910 26 86010 94040013 4040 1556911

当我尝试对上述数据帧执行分组操作时,我收到“无法从重复轴重新索引”错误。

df.groupby(['GRP','CATG'],as_index=False)['PRD'].min()

我尝试使用以下方法找出重复的索引:

df[df.index.duplicated()]

但没有返回任何东西。 我该如何解决这个问题?

【问题讨论】:

你用的是什么版本的熊猫? @Scott:我正在使用 Pandas 0.25.1 我无法用给定的数据复制您的问题。 我认为问题出在这些列之一。我刷新并重新运行了子集上的脚本。但是在你指出你无法复制它之后,我隔离了这个子集并重试,它没有抛出任何错误。我现在必须弄清楚 79 列中的哪一列是导致错误的原因。感谢斯科特的及时回复。 @Gene:感谢您的意见。这正是我的 df 中的问题。 【参考方案1】:

由于列名重复(不一定是值),通常会引发此错误

首先,只需使用以下代码检查列名中是否有任何重复: df.columns.duplicated().any()

如果为真,则删除重复的列

df.loc[:,~df.columns.duplicated()]

删除重复的列后,您应该能够运行 groupby 操作。

【讨论】:

【参考方案2】:

还要检查索引中的重复项。那是我的数据框的问题。我发现这个链接很有帮助:Solve Pandas “ValueError: cannot reindex from a duplicate axis

【讨论】:

【参考方案3】:

看看this。它帮助了我。看来我们也需要为系列重置索引。

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review

以上是关于ValueError:groupby Pandas 中的“无法从重复的轴重新索引”的主要内容,如果未能解决你的问题,请参考以下文章

Pandas`agc`列表,“AttributeError / ValueError:函数不减少”

不同长度的pandas groupby元组-ValueError:在通过级别中找不到值:MultiIndex

使用 Groupby 的 Pandas 滚动函数

熊猫:groupby 的问题。错误:'ValueError: Grouper for <something> not 1-dimensional'

在 pandas 中使用 groupby 命令后使用 seaborn 进行绘图

ValueError:无法使用 groupy 从重复轴重新索引并在 Pandas 中应用 pct_change