read_csv () требует len (names) == len (usecols)? - PullRequest
0 голосов
/ 28 сентября 2018

Я использую Python 3.6.3 и Pandas 0.21.1.

Следующее работает, как и ожидалось, когда engine='c':

data = 'note,,\ncolA,colB,colC\n1,2,3\n4,5,6'
import io
import pandas as pd
filesim = io.StringIO(data)
df = pd.read_csv(filesim, 
                 names=['a','b','c'], 
                 header=1, 
                 usecols=['a'],
                 engine='c')

Однако, если я переключаюсь на engine='python' Я вызываю ошибку в этом блоке parsers.py (строки 2445-2451):

if names is not None:
    if ((self.usecols is not None and
                 len(names) != len(self.usecols)) or       <--- my problem
                (self.usecols is None and
                 len(names) != len(columns[0]))):
                raise ValueError('Number of passed names did not match '
                                 'number of header fields in the file')

Кажется, я запускаю ошибку, предоставляя 3 элемента для names и только 1 элемент для usecols.Мои вопросы:

  1. Разве это не предполагаемое использование usecols - для указания подмножества names?Зачем нам выдавать ошибку, если их длины не равны?
  2. Почему в сообщении об ошибке ничего не говорится о usecols?
  3. Почему движок python создает мне эту проблему, нодвигатель c работает как положено?

Спасибо за помощь.

1 Ответ

0 голосов
/ 28 сентября 2018

Я уверен, что движок C работает по-другому и должен указывать разделители.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...