python - df.duplicated() 误报?

标签 python pandas

我有一个包含 2,865,044 个条目和 3 级 MultiIndex 的数据框

MultiIndex.levels.names = ['year', 'country', 'productcode']

我正在尝试 reshape 数据框以生成宽数据框,但出现错误:

ReshapeError: Index contains duplicate entries, cannot reshape

我用过:

data[data.duplicated()]

识别导致错误的行,但它列出的数据似乎不包含任何重复项。

这导致我使用 to_csv() 导出我的数据框并在 Stata 中打开数据并使用 duplicates list 命令查找数据集不包含重复项(根据 stata)。

来自已排序的 csv 文件的示例:

year country productcode duplicate
1962    MYS     711       FALSE
1962    MYS     712       TRUE
1962    MYS     721       FALSE

我知道这是不可能的,但我想知道是什么原因造成的吗?每个索引列中的数据类型为['year': int; “国家”:海峡,“产品代码”:海峡]。 Pandas 如何定义独特的群体?列出有问题的索引行有更好的方法吗?

更新: 我试过重置索引

temp = data.reset_index()
dup = temp[temp.duplicated(cols=['year', 'country', 'productcode'])]

我得到了一个完全不同的列表!

year    country productcode
1994      HKG      9710
1994      USA      9710
1995      HKG      9710
1995      USA      9710

更新 2 [28JUNE2013]:

在我的 IPython session 期间,这似乎是一个奇怪的内存问题。 今天早上的新实例似乎工作正常并 reshape 了数据,而无需对昨天的代码进行任何调整!如果问题再次出现,我会进一步调试并通知您。有人知道 IPython session 的良好调试器吗?

最佳答案

也许试试

cleaned = df.reset_index().drop_duplicates(df.index.names)
cleaned.set_index(df.index.names, inplace=True)

我认为索引中应该有一个duplicated方法,现在还没有

https://github.com/pydata/pandas/issues/4060

关于python - df.duplicated() 误报?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17339363/

相关文章:

python - Pandas 聚合然后得到组平均值

python - 在 pandas 数据框中显示具有一个或多个 NaN 值的行

python - 如何使用 Python 删除 CSV 文件的第二行

找不到 Python 但可以从 Microsoft Store 安装(2020 年 3 月)

python - 使用 flow_from_directory 将图像增强拟合到训练数据

python - 如何迭代 Pandas 数据框的列以运行回归

pandas - 使用 Pandas.rolling 计算滚动自相关

python - 如何使用 Python 3.6 遍历图像文件夹并在 Jupyter Notebook 中内联打印图像

python - 对象及其继承

python - Pandas 数据框搜索并修改邮政编码上的前导零