我正在使用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')
似乎我通过为names
提供3个项目而为usecols
仅提供1个项目来触发错误。我的问题是:
usecols
的预期用法-指定以下内容的子集吗?
names
?如果长度不相等,为什么会引发错误?usecols
的任何内容?感谢您的帮助。
答案 0 :(得分:0)
我确信C引擎的工作方式有所不同,需要指定定界符。