2017-07-20 5 views
0

私はPandasライブラリとPythonを使用しています。パンダ:データを抽出するための開始行を指定する方法

私は、データ抽出に必要のないExcelシートの上部にいくつかの見出し情報を持つExcelファイルを持っています。

しかし、見出し情報には長い行がかかる可能性があるため、予想できません。

したがって、私のデータ抽出は「ID」と書かれています... この特定のケースでは、行5から始まりますが、変更する可能性があります。

画像は下部に表示されます(機密情報の場合は5行目の後にグレー表示されます)。

これを論理的に入れます(見出しをスキップして行5にジャンプします)。 パターンは、 "ID、EMP_ID" などから列見出しを開始しますが、を使用してskiprows=4を指定することができます

enter image description here

with open('File.xls') as fp: 
    skip = next(filter(
     lambda x: x.startswith('ID'), 
     enumerate(fp) 
    ))[0] 

df = pd.read_excel('File.xls', usercols=['ID', 'EMP_ID'], skiprows=skip) 
print df 

答えて

1

手動のためにチェックすることができその後、のキーワード引数skiprowsを使用してください。

with open('data.csv') as fp: 
    skip = next(filter(
     lambda x: x[1].startswith('ID'), 
     enumerate(fp) 
    ))[0] 

その後の行をスキップ:

df = pandas.read_csv('data.csv', skiprows=skip) 

ようにあなたは、任意の長さの前ヘッダ部をサポートすることができます。 Pythonの2のために


import itertools as it 

with open('data.csv') as fp: 
    skip = next(it.ifilter(
     lambda x: x[1].startswith('ID'), 
     enumerate(fp) 
    ))[0] 
+0

私はこのエラーを取得しています。 AttributeError: 'タプル'オブジェクトに属性がありません 'startswith'上にコードが表示されています。 –

+0

@KingJavaあなたが正しいです、私はそれを修正しました。 'enumerate'はタプルを生成するので、2番目の項目を選択する必要があります。 –

+0

このエラーが発生しています。 TypeError:リストオブジェクトはイテレータではありません。 –

3

次のようになります。

df = pd.read_csv('test.csv', skiprows=4) 
関連する問題