2017-12-04 1 views
0

私はTabulaを使用してPDFからテーブルを抽出しました。それは働いて、マイナス少しきれいになります。最後の問題は私が克服する方法がわからないということです。セルの行が大きすぎると(つまり、ラップされたテキストが含まれている)、Tabulaはそれを2行に分割し、ほとんどすべての情報と2行目上の行の最初のセルのテキストの後半ですが、残りのセルは「なし」です。ここでTabulaでPDFを抽出した後のテーブルの並べ替え

は一例です:

df 

     House_Type    Area  Shape 

     Blue House  3456   circle 
     Red house  2345   square 
     Small Green  987   square 
     House   None   None 

理想的には私はコラム「House_Type」の上の行に列「House_Type」行「家」にテキストを追加することができるだろうし、その後を取り除きます行 "家"には "なし"と書かれています。私はループとしてそれをやっては

def row_funct(df): 
     row = 0 
     for row in df: 
      if area = None: 
      row += 1 

を働くかもしれないと思った。しかし、私はここからどこへ行くにまたはこれがあれば困惑

 df 

     House_Type    Area  Shape 

     Blue House    3456   circle 
     Red house    2345   square 
     Small Green House  987   square 

最終結果はこのような何かを探して右方向にも

答えて

0

私は同様の問題に遭遇し、以下の関数を書きました(あなたの例に合わせて少し修正しました):

def CleanRunResults(df): 
    for row in range(len(df)-1, -1, -1): 
     NoArea = pd.isnull(df['Area'].iloc[row]) 
     NoShape = pd.isnull(df['Shape'].iloc[row]) 
     YesType = pd.notnull(df['House_Type'].iloc[row]) 
     PrevRow = row - 1 
     if NoArea and NoShape and YesType: 
      df['House_Type'].iloc[PrevRow] = '{0}{1}'.format(df['House_Type'].iloc[PrevRow],df['House_Type'].iloc[row]) 
    df.dropna(subset=['Shape', 'Area'], how='all', inplace=True) 
    df = df[['House_Type', 'Shape', 'Area']] 
    return(df) 
関連する問題