Я использую 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
.Мои вопросы:
- Разве это не предполагаемое использование
usecols
- для указания подмножества names
?Зачем нам выдавать ошибку, если их длины не равны? - Почему в сообщении об ошибке ничего не говорится о
usecols
? - Почему движок python создает мне эту проблему, нодвигатель c работает как положено?
Спасибо за помощь.