Переформатирование фрейма данных и удаление фрейма данных «Nan» в Python (панды)

#python #pandas #dataframe

Вопрос:

У меня есть данные из PDF-файла, которые я хотел бы прочитать и проанализировать. Я использую tabula-py для чтения PDF-файла и извлечения данных в фрейм данных. Как вы можете себе представить, существует множество ошибок форматирования, которые возникают, поскольку tabula не очень хорошо распознает таблицы без границ.

В настоящее время у меня есть фрейм данных, который выглядит следующим образом:

 Unnamed: 0 Label: ... Label1 Unnamed: 1 0 NaN Specification: .. Spec1 NaN 1 NaN Date: ........... - 2 NaN Sheet: .......... 1 OF 1 NaN 3 Title:.......... Instrumentation Nan 4 Data Format 5 Data Bit Description NaN 6 1:.......FieldName1 NaN NaN 7 2:.......FieldName2 NaN NaN 8 3:.......FieldName2 NaN NaN 9 Remarks NaN NaN 10 Valid NaN NaN  

В идеале фрейм данных должен выглядеть примерно так:

 Field Value 0 Label: Label1 1 Specification: Spec1 2 Date: - 3 Sheet: 1 OF 1 4 Title: Instrumentation 5 Data Format 6 Data Bit Description 7 1: Fieldvalue1 8 2: Fieldvalue2 9 3: Fieldvalue3 10 Remarks 11 Valid  

По сути, это приведет к смещению столбцов определенных строк, чтобы заменить их на «Nan», а также распознает «…» в качестве разделителя, чтобы отделить определенные имена полей от их значений.

Я попытался dropna() удалить столбец, полностью состоящий из Nan, и проблема заключалась в том, что столбец 3 не был полностью Nan.

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

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

Пожалуйста, дайте мне знать, если вам понадобятся какие-либо дополнительные сведения, я буду признателен за любую помощь.