Как я могу остановить Табулу от автоматического удаления пустых столбцов? - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь очистить данные из PDF-файла, чтобы я мог отформатировать их, а затем вставить их в таблицу в Oracle.Я пытаюсь использовать Tabula для чтения PDF и преобразования его в список таблиц, но Tabula, похоже, удаляет столбцы из таблиц, если эти столбцы содержат только нулевые значения.Обычно это не проблема (для начала данные «Нет», поэтому я не хочу их сохранять), но удаление нулевых значений в некоторых столбцах, но не в других, делает невозможным мой кодчтобы определить, какие столбцы какие.Например, это может быть от:

0   1   2   3

x   x  n/a  x

x   x  n/a  x

x   x  n/a  x

до

0   1   2

x   x   x

x   x   x

x   x   x

Во время выполнения нет способа узнать, какой столбец удаляется, поэтому я не могу просто вставить его зановов нужное место.

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

Я исследовал API Tabula, и пока я нашелНесколько полезных руководств по удалению пустых столбцов. Я ничего не нашел, чтобы гарантировать их присутствие.

dflist = tabula.read_pdf(path, pages = '14-27', multiple_tables = True)
# dflist is a list of dataframes
# dflist[0] == a single dataframe

(Извинения за плохое форматирование; незнаком с интервалом переполнения стека)

Ожидаемые результаты:

0   1   2   3

X   NaN X   X   

X   NaN X   X   

X   NaN X   NaN

Фактические результаты:

0   1   2

X   X   X   

X   X   X   

X   X   NaN

1 Ответ

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

ОБНОВЛЕНИЕ: лучшее решение, которое я смог найти, - это использовать настройки «решетки», которые определяют, как таблицы читаются в Tabula (вы можете найти документацию на их сайте). К сожалению, эти настройки также смещают некоторые строки в моем PDF-файле, поэтому я не смог его использовать. Мне пришлось отказаться от идеи сделать его полностью автоматизированным, и теперь я использую промежуточную таблицу, где человек проверяет, какие столбцы будут удалены.

...