【问题标题】:How do I store each element of a List in a Data Frame, when the lists elements are pages of text that need to be parsed?当列表元素是需要解析的文本页面时,如何将列表的每个元素存储在数据框中?
【发布时间】:2019-01-01 07:29:04
【问题描述】:

我有一个包含几个元素的列表。每个元素本质上都是使用 OCR 和 Tesseract 将抓取的 PDF 文件转换为字符串的页面。

我想将每个页面分成几行,然后将所有这些内容存储在一个数据框中。我希望最终结构是“列是页”和“行是行”。

我知道以下内容将占用一个页面并将每一行存储在一个数据框中。

page1 = pd.DataFrame(final_text[0].splitlines())

我还知道,我可以将最终文本中的页面作为列存储在数据框中,使用以下方法:

pages = pd.DataFrame(final_text).T

我的问题有两个:

  1. 如何编写一个 for 循环来对 final_text 中的所有元素执行上述两项操作?

  2. for 循环需要考虑到每个元素或页面将产生不同数量的行。 Pandas 需要相同数量的行才能附加到数据框中。

我尝试了很多没有成功的事情,任何帮助或指导将不胜感激。

主要是在这些方面进行试验

for page in pages:
     page.splitlines()

但这会拉动索引值而不是实际元素。给出以下错误:

AttributeError: 'int' 对象没有属性 'splitlines'

【问题讨论】:

  • 你能把你也试过的东西贴出来吗?

标签: python list for-loop dataframe split


【解决方案1】:

这是我最终解决问题的方法。

# Determine the longest page value
page_length = []

for page in final_text:
    page_length.append(len(page.split('\n')))

page_length_max = max(page_length)

# Add blank lines to list entries so they equal the page with max length
updated_text = []

for page in final_text:
    updated_text.append(page.split('\n') + list(((page_length_max - len(page.split('\n'))) * '\n')))

# Create a dataframe with each page a column and each row and line
data = pd.DataFrame()

for i, page in enumerate(updated_text):
     data['page_%s' %str(i+1)] = page

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-08
    • 2019-01-24
    • 2022-07-31
    • 2022-11-27
    • 1970-01-01
    • 2022-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多