【问题标题】:Python pd.read_excel - find duplicated rows in all Excel SheetsPython pd.read_excel - 在所有 Excel 表格中查找重复的行
【发布时间】:2020-12-02 14:24:38
【问题描述】:

我有一个 Excel 报告,其中三张纸上有几百万行。我尝试使用以下代码导入整个 Excel 文件和所有工作表,并检查所有工作表中的重复行并显示所有重复行(第一行除外)。

如果我在没有 sheet_name=None 的情况下运行代码,它可以工作,但它只分析第一个工作表。

但是,当我添加参数 sheet_name=None 时,希望检查所有表格是否有重复项 - 它不起作用并且我收到错误消息。

import pandas as pd

df = pd.read_excel('Dup test.xlsx', sheet_name=None)
dups=df[df.duplicated()]
print(dups)

有人知道为什么会这样吗?以及如何检查我的 Excel 文件的每一页中的重复行 - 请问?谢谢。

这是错误:

Traceback(最近一次调用最后一次):文件 "\eu.ad.hertz.com\userdocs\irac920\Desktop\My Files\Python\4.py", 第 4 行,在 dups=df[df.duplicated()] AttributeError: 'dict' object has no attribute 'duplicated'

【问题讨论】:

  • “它不起作用,我收到一个错误”——如果您将错误作为问题的一部分发布,那将会很有帮助。
  • @Justin Ezequiel 当然。更新。谢谢。
  • 看来您的变量“df”不是 Pandas DataFrame 而是 Python 字典。您的 Excel 文件的每个工作表都可能有一个数据框。

标签: python pandas


【解决方案1】:

您会收到属性错误,因为当您指定 sheet_name=None 时,pandas 返回的是字典而不是 DataFrame。

>>> import pandas as pd
>>> df = pd.read_excel('import-order.xlsx', sheet_name=None)
>>> type(df)
<class 'dict'>
>>> df.keys()
dict_keys(['header', 'detail', 'ps_orders', 'ps_order_detail', 'Sheet5', 'Sheet7'])
>>> type(df['header'])
<class 'pandas.core.frame.DataFrame'>
>>>

【讨论】:

  • 谢谢。我没有提到我是一个完整的初学者,并且只从 Python 开始。我要做的是查看我的 Excel 文件中是否有任何重复的行,该文件由 3 张纸组成。我使用下面的代码来计算重复项的数量 - 但它只计算 Sheet1 中的重复项 - 知道如何让 Python 计算所有 3 张工作表中的所有重复项吗?这甚至可以用 pd.read_excel 完成吗?谢谢你。将熊猫导入为 pd df = pd.read_excel('Dup test.xlsx') print(df.duplicated().sum())
  • 查看pandas.concat 以合并您的数据集/工作表。
猜你喜欢
  • 2022-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-11
  • 1970-01-01
  • 1970-01-01
  • 2014-11-30
相关资源
最近更新 更多