2016-12-12 5 views
0

さまざまなシミュレーション結果を含むファイルがいっぱいのフォルダがあります。私は各ファイル内の単一の行をデータフレームにインポートしようとしています。私はパンダを使用してread_csvこのタスクを実行する機能。以下は、私が使用しているコードは次のとおりです。 -read_csvを使用してファイルから特定の行をインポートする方法

p32 = pd.DataFrame() 
file_list = glob.glob('*.sts') 


for file in file_list: 
    if p32.empty: 
     p32 = pd.read_csv(file, sep='\t', skiprows = 9, header = 1, nrows = 1 , skip_blank_lines = True, encoding = 'ISO-8859-1', skipinitialspace = True) 
     itz = file.split('.')[0].split('_')[2] 
     p32['Iteration'] = itz 
    else: 
     p32_temp = pd.read_csv(file, sep = '\t', skiprows = 9, nrows = 1, header =1 , encoding = 'ISO-8859-1', skipinitialspace = True) 
     itz = file.split('.')[0].split('_')[2] 
     p32_temp['Iteration'] = itz 
     p32 = pd.concat([p32, p32_temp], axis = 0) 
     del p32_temp 

問題がある、私は2つの異なるインデックスの場所にある2つの異なる行を抽出する必要があります。最初の場所はタイトル(インデックス= 10)を持ち、2番目の場所はデータ(インデックス14)を含んでいます。上記のコードを使用すると、適切なサイズのDataframeが正しい列で取得されます。ただし、データフレーム内のデータは間違った列からのものです。

私はskiprowsを変更する必要があることを知っています。あなたはこの引数にリストを渡すことができますが、どのようにしてヘッダの1つを確実にすることができますか?

多くのありがとうございます。

MT

答えて

0

私は(最善の方法ではないかもしれません)これを行うための簡単な方法をお勧めします。これはうまくいくはずです。

はこれを試してみてください:

file_list = glob.glob('*.sts') 
run_once = 0 
for file in file_list: 
    df = pd.read_csv(file, sep = '\t').iloc[[10,14]] 
    if run_once == 0: 
     frames = df 
     run_once = 1 
    else: 
     frames = pd.concat([frames, df]) 

は、あなたが動けなくなるなら、私に教えてください。お力になれて、嬉しいです !!

関連する問題