2016-09-02 8 views
1

Я хочу прочитать dataframe из файла csv, где заголовок не находится в первой строке. Например:Как пропустить неизвестное количество пустых строк перед заголовком на pandas.read_csv?

In [1]: import pandas as pd 

In [2]: import io 

In [3]: temp=u"""#Comment 1 
    ...: #Comment 2 
    ...: 
    ...: #The previous line is empty 
    ...: Header1|Header2|Header3 
    ...: 1|2|3 
    ...: 4|5|6 
    ...: 7|8|9""" 

In [4]: df = pd.read_csv(io.StringIO(temp), sep="|", comment="#", 
    ...:     skiprows=4).dropna() 

In [5]: df 
Out[5]: 
    Header1 Header2 Header3 
0  1  2  3 
1  4  5  6 
2  7  8  9 

[3 rows x 3 columns] 

Проблема с выше кода является то, что я сейчас не сколько строк будет существовать до заголовка, поэтому я не могу использовать skiprows=4 как я здесь.

Я знаю, что могу перебирать файл, как в вопросе Read pandas dataframe from csv beginning with non-fix header.

То, что я ищу, является более простым решением, например, сделать pandas.read_csv игнорировать любую пустую строку и перенести первую непустую строку в качестве заголовка.

+0

Извините, но не 'pd.read_csv (io.StringIO (температура), Сентябрь = "|", комментарий = "#")' работа? – ayhan

+0

Нет, строки комментариев переводятся в пустые строки, которые не игнорируются. – bmello

+0

Это может быть проблема с версией? 'skip_blank_lines = True' является значением по умолчанию в 0.18.1. – ayhan

ответ

4

Вам нужно установить skip_blank_lines=True

df = pd.read_csv(io.StringIO(temp), sep="|", comment="#", skip_blank_lines=True).dropna() 
+0

Спасибо. Я подозревал, что такой вариант должен существовать и даже проверять справку read_csv. Я не нашел, потому что я использую панды 0,13. Я попытаюсь обновить. – bmello