【问题标题】:Cannot rename columns from a table/ list object. (python/tabular)无法重命名表/列表对象中的列。 (蟒蛇/表格)
【发布时间】:2020-10-28 09:32:21
【问题描述】:

由于我的无能,我已经在这件事上苦苦挣扎了整整 2 天。在尝试了几乎所有的 stackoverflow 和其他解决方案后,遗憾的是我仍然没有运气。

我正在使用 Tabular-Py 从 PDF 中导入表格。之后它已经“完美”地呈现在一个数据框中。用于此的代码部分是:

tables = tabula.read_pdf(file, pages=18, lattice=True, multiple_tables = False)
Print(Tables)

[打印表格后的输出] [1]:https://i.stack.imgur.com/82Qpa.png

但是,它似乎是一个列表对象,因为它阻止了我对它进行除打印之外的任何其他操作。即使使用整数和重命名列也不起作用,因为错误会导致“不能 XX,因为它是一个列表对象”。我的印象是 Tabular 直接制作了 Pandas 数据框。

现在,当我尝试添加以下代码以根据需要重命名列时:

tables.columns = ['HS_Code', 'Product', 'PreviousMonth', 'CurrentMonth', 'LastYear']

我得到了错误:

AttributeError: 'list' 对象没有属性 'columns'

我尝试了多种形式的重命名和使用不同的输出集,例如 Json。仍然没有运气,它仍然是一个“列表对象”。

有人有这方面的经验吗?如何确保我拥有的表/数据框是实际数据框而不是列表对象?

任何提示将不胜感激。

【问题讨论】:

  • 您是否尝试将其转换为 pandas.DataFrame?像 pandas.DataFrame(tables) 或 pd.DataFrame.from_records(tables)...
  • 我试过了,但我只能将列标题(1 行)作为新的 pandas 数据框。
  • 所以当使用panda数据框进行转换时,只能接收headers。这些行不再可见。

标签: python pandas tabular


【解决方案1】:

我不熟悉 tabula-py 对象,但考虑到this post,您可以执行以下操作:

  1. 手动复制pdf内容后使用pandas.read_clipboard() 或 2. 将 tabula-py 对象保存为 csv 并使用pandas.read_csv() 获取 DataFrame

之后,您可以使用 pandas 操作数据(例如更改列名)。

【讨论】:

  • 我很欣赏评论/解决方案,它似乎有效,但这意味着手动操作。该脚本是我构建的中间件的一部分,用于自动导入 PDF 并将它们解析为显然是列表对象的内容。我希望成为一个熊猫数据框。感谢您的帮助。在解析 PDF 表格方面,我将尝试找到 Tabula 的替代方案。
  • 对不起,我的回答有点混乱。 1.会是手动操作。但是2.可以自动化。只需将 tabula-py 对象保存为 csv 作为中间步骤。
  • 完美,很明显,我太菜鸟了。这行得通!
猜你喜欢
  • 2022-06-24
  • 1970-01-01
  • 1970-01-01
  • 2022-06-17
  • 1970-01-01
  • 1970-01-01
  • 2015-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多