Чтение файла CSV в Pandas с пустыми строками между ними - PullRequest
0 голосов
/ 19 октября 2018

У меня есть файл data.csv, подобный этому

Col1,Col2,Col3,Col4,Col5  
10,12,14,15,16  
18,20,22,24,26  
28,30,32,34,36  
38,40,42,44,46  
48,50,52,54,56

Col6,Col7  
11,12  
13,14  
...

Теперь я хочу читать только данные столбцов Col1-Col5 и мне не требуются Col6 и Col7.

Я попытался прочитать этот файл, используя

df = pd.read_csv('data.csv',header=0)

, затем выдает ошибку, говорящую

UnicodeDecodeError : 'utf-8' codec cant decode byte 0xb2 in position 3: invalid start byte

Затем я попытался это

df = pd.read_csv('data.csv',header=0,error_bad_lines=True)

Но это также недавая желаемый результат.Как мы можем читать только до первой пустой строки в CSV-файле?

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

У Панд нет возможности остановиться при условии, но у него есть условие, чтобы остановиться после n строк.Таким образом, вы можете сначала прочитать файл, подсчитать количество строк до пустого значения, а затем загрузить в pandas команду

pd.read_csv('file.csv',nrows= count )

В соответствии с этим:

count = 0
with open(filename) as f:
    for line in f:
        if line and line != '\n':
            count += 1
        else:
            break

pd.read_csv(filename,nrows=count)
0 голосов
/ 19 октября 2018

Вы можете создать генератор, который читает файл построчно.Результат передается в pandas:

import pandas as pd
import io


def file_reader(filename):
    with open(filename) as f:
        for line in f:
            if line and line != '\n':
                yield line
            else:
                break


data = io.StringIO(''.join(file_reader('data.csv')))
df = pd.read_csv(data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...