2016-04-21 3 views
0

У меня есть файл похожийполучить одну конкретную строку комментария в качестве заголовка с питоном панды

# Comment 1 
# Comment 2 
# A B C 
1 2 3 
4 5 6 
7 8 9 

Как читать его с модулем питона панд, так как последняя строка комментариев можно интерпретировать как столбцы заголовков ?

Я попытался

pandas.read_table(file_path, header= 2 , comment='#') 

Но комментарий линии устраняются первым, таким образом, строка заголовка будет 7 8 9

ответ

2

Вы можете сделать это вручную: сначала прочитать комментарии, синтаксический анализ имен столбцов , а затем вызвать read_table:

import itertools 
import pandas as pd 

def read_data(path): 
    with open(path) as handle: 
     *_comments, names = itertools.takewhile(
      lambda line: line.startswith('#'), handle) 

     # This is not the most robust way, adjust for your needs :) 
     names = names[1:].split() 

    return pandas.read_table(path, header=0, names=names, sep=' ', comment='#') 
0
In [7]: pd.read_csv('test.csv',skiprows=2,sep='\s+',escapechar='#') 
Out[7]: 
    A B C 
0 1 2 3 
1 4 5 6 
2 7 8 9 

escapechar скажите, что # следует рассматривать как конец поля. Здесь он используется в качестве чистого обходного пути. sep='\s+' требуется здесь, потому что у вас есть пробел после 3 и 6 в вашем файле (или на этой странице.)