Объедините последовательные кадры данных в списке с одинаковым количеством столбцов (из PDF, где они были разбиты по разрывам страниц) - PullRequest
0 голосов
/ 22 мая 2019

После прочтения PDF с Tabula у меня есть несколько фреймов данных, которые были разделены, потому что они занимали несколько страниц.Я хочу объединить их и удалить строку заголовка, чтобы восстановить полную таблицу.Я предполагаю, что количество таблиц будет меняться в каждом документе, поэтому похоже, что оно должно охватывать любой сценарий, в котором таблицы разделяются.

Я знаю, что я хочу, чтобы цикл for просматривал список и проверял, следующий ли кадр данныхимеет такое же количество столбцов.Если так, то эти два должны быть объединены.Конкатенация вручную (с использованием print (pd.concat ([df_list [12], df_list [13], df_list [14]]))) работает, поэтому нужно просто выяснить, как это написать.

Вот мое приближение к тому, что должно быть:

import pandas as pd
import tabula

df_list=read_pdf("test.pdf",multiple_tables=True,lattice=True,pages='all',encoding='utf-8',spreadsheet=True)

for i in df_list:
    if i.shape[1] = (i+1).shape[1]:
        pd.concat([i,(i+1)])

Я получаю сообщение об ошибке «Ошибка типа: не может работать 1 со значениями блока, должно быть str, а не int», но я не уверен, что я делаюс этим для цикла.

1 Ответ

0 голосов
/ 22 мая 2019

Тип i в вашем цикле конфликтует с типом 1 (который int) в выражении i+1.Вы не показываете создание df_list в опубликованном коде, но я предполагаю, что это str, следовательно, TypeError: вы пытаетесь объединить int (1) со строкой (i) с использованием оператора +.

...