2017-10-31 23 views
0

私はPythonでpandasを使用して複数のExcelファイルを読み込んでいます。 I有する3例PythonのパンダでExcelの空白行を動的にスキップ

  1. 一部シートが行からのデータを有する1
osht=pd.DataFrame(filename+sheetname) 

delimited table Example: 
Country;Company;Product 
US;ABC;XYZ 
US;ABD;XYY 
  • 一部は、テーブルの前に空白行のN個を有しますいくつかのシートには、 の要約があります。私はskip_blankを使って知っています。空白行を取り除くことはできますが、空白行の数は自然界には固定されていません。3または4または8が可能です。
  • delimited table Example: 
    ;; 
    ;; 
    ;; 
    Country;Company;Product 
    US;ABC;XYZ 
    US;ABD;XYY 
    
    <オール開始=「3」>私はそこにどのように -Is第三行の概要からということを把握する方法を確認してください、これらすべてのシートを読み取ろうとするが、いない午前1列目で
  • テーブル終了し、4行目は、私の表の見出しと最初の列の先頭である「国の
  • delimited table Example: 
    
    Product summary table for East region;; 
    Date: 1st Sep, 2016;; 
    ;; 
    Country;Company;Product 
    US;ABC;XYZ 
    US;ABD;XYY 
    
    +0

    は、あなたが再コンディショニングあなたのExcelブックを検討していますか?見つけた空の行を取り除き、エクセルブックを書くためのエクセルモジュールを使って新しいエクセルブックと同じものに書き戻します。私はこれがあなたの最善の策だと信じています。 –

    +2

    データの例を提供した場合は、質問が改善されます。要約はどのように見えるのですか?いくつの列と行が必要ですか?列頭から要約をどのように伝えますか? –

    +0

    すべての空白行を削除する方法 'df.dropna()' – DJK

    答えて

    0

    である私が提案しますドロップは、ヘッダ

    上記のすべての行

    1. テーブル全体を読むヘッダーとして何の欠損値が含まれていない最初の行を考えてみましょう
    2. このコードは、私にとってはいい作品:アルゴリズムは、以下の:

      import pandas as pd 
      for sheet in range(3): 
          raw_data = pd.read_excel('blank_rows.xlsx', sheetname=sheet, header=None) 
          print(raw_data) 
          # looking for the header row 
          for i, row in raw_data.iterrows(): 
           if row.notnull().all(): 
            data = raw_data.iloc[(i+1):].reset_index(drop=True) 
            data.columns = list(raw_data.iloc[i]) 
            break 
          # transforming columns to numeric where possible 
          for c in data.columns: 
           data[c] = pd.to_numeric(data[c], errors='ignore') 
          print(data) 
      

      例に基づいてthis toy data sampleが使用されます。生データフレーム

        0  1  2 
      0 Country Company Product 
      1  US  ABC  XYZ 
      2  US  ABD  XYY 
      
           0  1  2 
      0  NaN  NaN  NaN 
      1  NaN  NaN  NaN 
      2  NaN  NaN  NaN 
      3 Country Company Product 
      4  US  ABC  XYZ 
      5  US  ABD  XYY 
      
                   0  1  2 
      0 Product summary table for East region  NaN  NaN 
      1     Date: 1st Sep, 2016  NaN  NaN 
      2         NaN  NaN  NaN 
      3        Country Company Product 
      4          US  ABC  XYZ 
      5          US  ABD  XYY 
      

      からスクリプトが同じテーブルを作成

      Country Company Product 
      0  US  ABC  XYZ 
      1  US  ABD  XYY 
      
    +0

    Thanks @ David、Great solution。 –

    +0

    ありがとう@David、すばらしい解決策。その読み込みファイルの見出しは正確ですが、上記のコードを添付した後、私の前のコードがどのように機能していないのか、データを読み込んだ後、データ型に基づいてデータフレームからいくつかの列を削除しています。また、数値列にも ''頭文字は頭に入れてください.df.columns.tolist()は頭にcustom_col_listではなく、np.issubdtype(df [head] .dtype、np.number)] ' –

    +0

    @RajeshMhatreそれが可能であれば、それぞれを数値に変換しようとします。私はこれを私の答えに加えました。 –

    関連する問題