2016-04-21 5 views
0

Ich habe eine Datei wiemit Python einer bestimmten Zeile des Kommentars als Header erhalten Pandas

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

Wie es mit Python Pandas Modul zu lesen, so wie die letzte Zeile der Kommentare können wie die Spalten Titel interpretiert werden ?

Ich habe

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

Aber die Kommentarzeilen werden zuerst beseitigt werden, damit die Kopfzeile wird 7 8 9

Antwort

2

Sie können dies manuell tun: lesen Sie zuerst die Kommentare, analysieren die Spaltennamen , dann rufen 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 sagen, dass # muss als ein Ende des Feldes betrachtet werden. Hier wird es als saubere Umgehungslösung verwendet. sep='\s+' ist hier erforderlich, da Sie nach 3 und 6 in Ihrer Datei (oder dieser Seite) ein Leerzeichen haben.