2016-06-02 8 views
0

Я пишу код для чтения и извлечения параметров из каждой строки файла CSV.Python Pandas read_csv читает только одну строку из CSV-файла

Из каждой строки я получаю список значений параметров, упорядоченных по датам и значениям. Пример файл CSV, как показано ниже:

Row1: 'Fanspeed','Value=32','Datetime=05-01-2015','Fanspeed','Value=32','Datetime=05-02-2015' 

Row2: 'Fanspeed','Value=32','Datetime=05-03-2015','Fanspeed','Value=32','Datetime=05-04-2015' 

Если я использую панда read_csv прочитать в файле, а затем распечатать вывод, он выводит только первую строку. Однако, когда я использую функцию csv.reader, я получаю правильный вывод. Моя программа выглядит следующим образом:

csv_f = pd.read_csv('test.csv') 
for row in csv_f: 
    csv_f = pd.read_csv('test.csv') 
    print csv_f 

я получаю только следующий вывод:

'Fanspeed','Value=32','Datetime=05-01-2015','Fanspeed','Value=32','Datetime=05-02-2015' 

Однако на ту же программу с csv.reader функции, как показано ниже:

f = open('test.csv') 
csv_f = csv.reader(f) 
for row in csv_f: 
    csv_f = pd.read_csv('test.csv') 
    print csv_f 

Я получаю правильный выход. Может кто-нибудь мне помочь?

+0

Они семантически разные, в первом открытии объекта файла и повторно использовать его, чтобы он читает построчно из того же файлового объекта, в второй фрагмент кода, который вы выполняете по каждой строке в csv, а затем снова открываете csv, который сбрасывается обратно в первую строку. – EdChum

+1

pandas.read_csv() читает весь файл и создает фрейм данных с его содержимым, это как первое, что было сказано в доке. Но ни одна из ваших версий кода в действительности не имеет смысла, почему вы перепроверяете то, что вы повторяете? Зачем смешивать модуль csv и панды? И ваш примерный файл даже не корректен csv. – polku

+0

Сколько строк имеет файл csv? – Merlin

ответ

1

Прежде всего, вы можете попробовать передать 'header = None', чтобы указать, что первая строка будет представлять собой данные вместо заголовков.

csv_f = pd.read_csv('test.csv', header=None) 
print csv_f 

Во-вторых, то, что read_csc возвращает, уже является DataFrame, поэтому вы должны непосредственно работать над ним. Более подробная информация pandas.read_csv

0

Попробуйте это:

csv_f = pd.read_csv('test.csv') 
    print csv_f.head() 
    #for row in csv_f: 
     #csv_f = pd.read_csv('test.csv') 
     #print csv_f