2017-07-17 16 views
-4

pdfを表形式のDataframeに変換しようとしています。私はPython 3.6を使用しています。Pythonを使用してPDFをデータフレームに変換する

同じように変換するのを手伝ってください。

PDFファイルのリンクをたどってください:

http://centerforcollegeaffordability.org/uploads/component-rankings-2014-v2.pdf

+0

Stackoverflowは無料のコード作成サービスではありません。 –

+0

はい、私は知っています。私はここに学びます。私はPythonの初心者です。私は同じことを解決しようとしました。私はPyPDF2を使ってみましたが、それはしませんでした。回避策の提案をお願いします。 –

+0

あなたが試したことを示してください。 –

答えて

1

私は道を見出しました。私はTabula-py bindingとPyPDF2を使用しています。

私はPyPDF2を使用してPDF内のページ数を取得し、それを使用して.pdfファイルの各ページを反復処理しています。

そしてTabulaは、データを抽出してデータフレームに変換するために使用されます。

より良い方法がある場合は、修正してください。

import pandas as pd 
import numpy as np 
from tabula import read_pdf_table 
import PyPDF2 

reader = PyPDF2.PdfFileReader(open('Your Path', mode='rb')) 
m = reader.getNumPages() 
#print(reader) 
print(m) 
for i in range(m): 
    n = i+1 

    if n==1: 
     df = read_pdf_table('Your Path', pandas_options={'header': None, 'error_bad_lines': False}, pages=n) 
     index = np.where(df[0].isnull())[0] 
     sect = df.iloc[index[0]:index[-1]] 
     s = [] 
     headers = [] 
     for col in sect: 
      colnames = sect[col].dropna().values.flatten() 
      (s.insert(len(s), colnames)) 
      pic = [' '.join(s[col])] 
      for i in pic: 
       headers.append(i) 
     print(df) 
     df.drop(sect, inplace=True) 
     df.columns = headers 
     new_df = pd.DataFrame(columns=headers) 
     new_df = pd.concat([new_df, df], axis=0, ignore_index=True) 

    else: 
     df_2 = read_pdf_table('Your Path', pandas_options={'header': None, 'error_bad_lines': False, 'encoding': "ISO-8859-1"}, pages=n) 
     df_2.drop(sect, inplace=True) 
     df_2.columns = headers 
     new_df = pd.concat([new_df, df_2], axis=0, ignore_index=True) 

new_df.columns = headers 
print(new_df) 
new_df.to_csv('Your Path', index=False) 
関連する問題