【问题标题】:ValueError: Shape of passed values is (20, 1), indices imply (20, 6)ValueError:传递值的形状为 (20, 1),索引暗示 (20, 6)
【发布时间】:2021-12-05 11:46:34
【问题描述】:

我正在尝试从 tif 文件中获取数据,将其存储在 data 并创建一个熊猫 df0

data = []
listOfPages = glob.glob(r"C:/Users/name/*.tif")
for entry in listOfPages:
    text = pytesseract.image_to_string(
            Image.open(entry), lang="en"
        )
    data.append(text)
    
    duck1 = re.compile(r'(CHE)(.*)\\n', flags = re.DOTALL | re.MULTILINE)
    asker1 = re.compile(r'(my|the)\s+zzzz(.*)office', flags = re.DOTALL | re.MULTILINE)
    date1 = re.compile(r'\s+dfg(\d{2}\.\d{2}\.\d{4})', flags = re.DOTALL | re.MULTILINE)
    th1 = re.compile(r'(gh|gh)\s+fg\s+sdf(.*)(rrr,\s+rtr)', flags = re.DOTALL | re.MULTILINE)
    frage1 = re.compile(r'(\\neee)(.*)(we|wzz)\s+drte\s+Srrr:', flags = re.DOTALL | re.MULTILINE)
    try:
        d2 = duck1.search(text)
        if d2:
            dru = d2.group(1)
        else:
            dru = None
    except:
        pass
    try:
        asker2 = asker1.search(text)
        if asker2:
            asker = asker2.group(1)
        else:
            asker = None
    except:
        pass
    try:
        date2 = date1.search(text)
        if date2:
            datr = date2.group(0)
        else:
            datr = None
    except:
        pass
    try:
        thema2 = thema1.search(text)
        if thema2:
            thema = thema2.group(1)
        else:
            thema = None
    except:
        pass
    try:
        frage2 = frage1.search(text)
        if frage2:
            frage = frage2.group(1)
        else:
            frage = None
    except:
        pass
    data.append([text, dru, asker, datr, thema, frage])
    
df0 = pd.DataFrame(data, columns =['raw_text', 'wer', 'asker', 'date', 'area', 'que_text'])
print(df0)

ValueError:传递值的形状为 (20, 1),索引暗示 (20, 6)

我做错了什么?我理解错误(来自阅读同一主题但不同的场景)应该有重叠的索引我需要在追加之前删除?

【问题讨论】:

  • 您正在传递形状为 (20,1) 的 data,而您的数据框需要形状为 (20,6) 的东西。这很可能是因为您的所有六个值都包含在一个列表中。
  • 你的data是这样的[text, list, text, list, text, list, ...]

标签: python pandas list dataframe


【解决方案1】:

您只需停止将text 最初附加到data,因为您在列表中循环的最后一个执行此操作,这将创建data 作为具有形状(20,6)的列表列表你需要。

for entry in listOfPages:
    text = pytesseract.image_to_string(
            Image.open(entry), lang="en"
        )
    #data.append(text)
    
    duck1 = re.compile(r'(CHE)(.*)\\n', flags = re.DOTALL | re.MULTILINE)
    asker1 = re.compile(r'(my|the)\s+zzzz(.*)office', flags = re.DOTALL | re.MULTILINE)
    date1 = re.compile(r'\s+dfg(\d{2}\.\d{2}\.\d{4})', flags = re.DOTALL | re.MULTILINE)
    th1 = re.compile(r'(gh|gh)\s+fg\s+sdf(.*)(rrr,\s+rtr)', flags = re.DOTALL | re.MULTILINE)
    frage1 = re.compile(r'(\\neee)(.*)(we|wzz)\s+drte\s+Srrr:', flags = re.DOTALL | re.MULTILINE)
    try:
        d2 = duck1.search(text)
        if d2:
            dru = d2.group(1)
        else:
            dru = None
    except:
        pass
    try:
        asker2 = asker1.search(text)
        if asker2:
            asker = asker2.group(1)
        else:
            asker = None
    except:
        pass
    try:
        date2 = date1.search(text)
        if date2:
            datr = date2.group(0)
        else:
            datr = None
    except:
        pass
    try:
        thema2 = thema1.search(text)
        if thema2:
            thema = thema2.group(1)
        else:
            thema = None
    except:
        pass
    try:
        frage2 = frage1.search(text)
        if frage2:
            frage = frage2.group(1)
        else:
            frage = None
    except:
        pass
    data.append([text, dru, asker, datr, thema, frage])
    
df0 = pd.DataFrame(data, columns =['raw_text', 'wer', 'asker', 'date', 'area', 'que_text'])
print(df0)

这应该可以正常工作。

【讨论】:

    猜你喜欢
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 2019-01-27
    • 2020-01-12
    • 2021-10-31
    • 2021-05-12
    相关资源
    最近更新 更多