Панды read_csv загружают данные с неправильными строками - PullRequest
0 голосов
/ 17 октября 2018

Скажем, у меня есть данные CSV, такие как:

a
b,c
d,e,f
g,h
i

(Обратите внимание на пропущенные запятые, указывающие пустые значения)

Как я могу загрузить это в DataFrame, чтобы пустые значениянаполниться NaN (или хотя бы чем-нибудь), как показано ниже?

     0    1    2
0    a  NaN  NaN
1    b    c  NaN
2    d    e    f
3    g    h  NaN
4    i  NaN  NaN

Ответы [ 3 ]

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

Здесь:

pd.read_csv('myfile.csv', header=None)

Вы можете заполнить пропущенные значения самостоятельно. Это должно работать, если данные немного не отличаются.

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

Это работает для меня вышеупомянутых данных:

import io
import pandas as pd

def add_delimiters(fpath, delimiter=','):

    s_data = ''
    max_num_delimiters = 0

    with open(fpath, 'r') as f:
        for line in f:
            s_data += line
            delimiter_count = line.count(delimiter)
            if delimiter_count > max_num_delimiters:
                max_num_delimiters = delimiter_count

    s_delimiters = delimiter * max_num_delimiters + '\n'

    return io.StringIO(s_delimiters + s_data)

pd.read_csv(add_delimiters('data.csv'))

Простой вызов pd.read_csv('data.csv', header=None) выдает ParseError при попытке загрузки данных.ParserError: Error tokenizing data. C error: Expected 1 fields in line 2, saw 2

Кажется, что вместо необходимости вручную редактировать данные путем добавления дополнительных разделителей в первую строку, это должно быть поведение по умолчанию.Или, по крайней мере, должен быть флаг, который мы можем поднять, чтобы сделать эту работу.

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

Все, что вам нужно сделать, это добавить ,, в начало вашего файла, чтобы оно выглядело следующим образом:

,,
a
b,c
d,e,f
g,h
i

Тогда оно будет выглядеть точно так, как вы предполагали.

Этоэто вывод pd.read_csv('test.csv'):

     Unnamed: 0 Unnamed: 1 Unnamed: 2
0          a        NaN        NaN
1          b          c        NaN
2          d          e          f
3          g          h        NaN
4          i        NaN        NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...