Доступ к индексам в списке - PullRequest
1 голос
/ 18 апреля 2020

Я использую tabula-py для извлечения таблицы из pdf-документа следующим образом:

rows = tabula.read_pdf('bank_statement.pdf', pandas_options={"header":[0, 1, 2, 3, 4, 5]}, pages='all', stream=True, lattice=True) 

rows

Это дает следующий вывод:

[                                                   0
 0  Customer Statement\rxxxxxxx\rP...
 1  Print Date: April 12, 2020Address: 41 BAALE ST...
 2  Period: January 1, 2020 ­ April 12, 2020Openin...,
                                                    0
 0  Customer Statement\xxxxxxxx\rP...
 1  Print Date: April 12, 2020Address: 41 gg ST...,
              0          1            2          3          4          5  \
 0  03­Jan­2020          0  03­Jan­2020        NaN  50,000.00  52,064.00   
 1  10­Jan­2020          0  10­Jan­2020  25,000.00        NaN  27,064.00   
 2  10­Jan­2020          0  10­Jan­2020      25.00        NaN  27,039.00   
 3  10­Jan­2020          0  10­Jan­2020       1.25        NaN  27,037.75   
 4  20­Jan­2020  999921...  20­Jan­2020  10,000.00        NaN  17,037.75   
 5  23­Jan­2020  999984...  23­Jan­2020   4,050.00        NaN  12,987.75   
 6  23­Jan­2020          0  23­Jan­2020   1,000.00        NaN  11,987.75   
 7  24­Jan­2020          0  24­Jan­2020   2,000.00        NaN   9,987.75   
 8  24­Jan­2020          0  24­Jan­2020        NaN  30,000.00  39,987.75   

                                                    6  
 0  TRANSFER BETWEEN\rCUSTOMERS Via GG from\r...  
 1  NS Instant Payment Outward\r000013200110121...  
 2  COMMISSION\r0000132001101218050000326...\rNIP ...  
 3     VALUE ADDED TAX VAT ON NIP\rTRANSFER FOR 00001  
 4  CASH WITHDRAWAL FROM\rOTHER ATM ­210674­ ­4420...  
 5  POS/WEB PURCHASE\rTRANSACTION ­845061­\r­80405...  
 6  Airtime Purchase MBANKING­\r101CT0000000001551...  
 7  Airtime Purchase MBANKING­\r101CT0000000001552...  
 8  TRANSFER BETWEEN\rCUSTOMERS\r00001520012412113...  ,

Что я хочу из этого pdf начинается с индекса 2. Итак, я запускаю

rows[2]

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

enter image description here

Сейчас Я хочу индексы от 2 до последнего индекса. Я сделал

rows[2:]

Но я получаю список, а не ожидаемый фрейм данных.

[             0          1            2          3          4          5  \
 0  03­Jan­2020          0  03­Jan­2020        NaN  50,000.00  52,064.00   
 1  10­Jan­2020          0  10­Jan­2020  25,000.00        NaN  27,064.00   
 2  10­Jan­2020          0  10­Jan­2020      25.00        NaN  27,039.00   
 3  10­Jan­2020          0  10­Jan­2020       1.25        NaN  27,037.75   
 4  20­Jan­2020  999921...  20­Jan­2020  10,000.00        NaN  17,037.75   
 5  23­Jan­2020  999984...  23­Jan­2020   4,050.00        NaN  12,987.75   
 6  23­Jan­2020          0  23­Jan­2020   1,000.00        NaN  11,987.75   
 7  24­Jan­2020          0  24­Jan­2020   2,000.00        NaN   9,987.75   
 8  24­Jan­2020          0  24­Jan­2020        NaN  30,000.00  39,987.75   

                                                    6  
 0  TRANSFER BETWEEN\rCUSTOMERS Via gg from\r...  
 1  bi Instant Payment Outward\r000013200110121...  
 2  COMMISSION\r0000132001101218050000326...\rNIP ...  
 3     VALUE ADDED TAX VAT ON NIP\rTRANSFER FOR 00001  
 4  CASH WITHDRAWAL FROM\rOTHER ATM ­210674­ ­4420...  
 5  POS/WEB PURCHASE\rTRANSACTION ­845061­\r­80405...

Пожалуйста, я решил это? Мне нужен фрейм данных для индексов, начиная с 2 и далее.

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

Вы получаете это поведение, потому что rows является list и нарезкой , список создает другой список . Когда вы получаете доступ к элементу с указанным c индексом, вы получаете объект с этим индексом; в этом случае объект DataFrame .

Библиотека pandas поставляется с функцией concat , которая может объединять несколько объектов DataFrame в одно - я считаю, что это то, что вы хотите сделать - так, что у вас есть:

import pandas as pd


df_combo = pd.concat([rows[2], rows[3], rows[4], rows[5] ...])

Еще лучше:

df_combo = pd.concat(rows[2:])
0 голосов
/ 18 апреля 2020

Взгляните на https://medium.com/analytics-vidhya/how-to-extract-multiple-tables-from-a-pdf-through-python-and-tabula-py-6f642a9ee673

Лучший способ go о том, чего вы пытаетесь достичь, это прочитать таблицу и вернуть ответ как JSON , l oop через json объекты для ваших списков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...