Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 同时使用usecols和skiprows(在Pandas read_csv中)会产生错误_Python_Pandas_Dataframe - Fatal编程技术网

Python 同时使用usecols和skiprows(在Pandas read_csv中)会产生错误

Python 同时使用usecols和skiprows(在Pandas read_csv中)会产生错误,python,pandas,dataframe,Python,Pandas,Dataframe,我使用Pandas v0.18.1中的read_csv来读取一些数据。我想从csv中选择列和行的子集,因此我尝试了: df_a = pd.read_csv(filepath, index_col = False, usecols=cols_to_use, skiprows=1) 这给了我一个ValueError:Usecols与名称不匹配。 请注意,cols_to_use是一个列名列表,但如果我省略skiprows部分: df_a = pd.read_csv(filepath, index_c

我使用Pandas v0.18.1中的read_csv来读取一些数据。我想从csv中选择列和行的子集,因此我尝试了:

df_a = pd.read_csv(filepath, index_col = False, usecols=cols_to_use, skiprows=1)
这给了我一个ValueError:Usecols与名称不匹配。 请注意,cols_to_use是一个列名列表,但如果我省略skiprows部分:

df_a = pd.read_csv(filepath, index_col = False, usecols=cols_to_use)
它工作得很好,同样地,如果我去掉usecols部分,把skiprows放回去,也可以工作得很好

这可能是一个bug(您不能同时使用usecols和skiprows)?我试着在文档中查找,但找不到任何提及。或者可能有一个逻辑上的原因,你不能同时使用这两个

(如果有更好/更明显的方法从csv中选择列和行的子集,我们也会很感激!)


提前谢谢

如果csv文件的第一行包含列名,则
skiprows=1
将忽略包含列名的行,并且您会遇到错误


如果要跳过特定行,可以使用例如
skiprows=[1]
将行号作为列表提供。行号是0索引的,因此列名在第0行,第一个数据行是数字1。

我不确定您想做什么。但是
cols\u to\u use
可以是列名列表,如果这些列名位于标题行中(您可以使用
skiprows=1
跳过这些列名)或整数列表中。也许您正在尝试命名您的列。在这种情况下,您希望使用
names=cols\u
。请提供您试图读取的文件的示例?你能提供工作命令的输出吗?我猜您的文件的列名在第一行。如果使用skiprows,pandas可能不会读取第一行,而可能会读取第2行中的列名。问题表明他希望“从csv中选择列和行的子集”。因此,
names=cols\u to\u use
似乎不是一个好办法。如果您想跳过特定的行,可以使用例如
skiprows=[1]
将行号作为列表提供。行号是0索引的,因此第一行的索引是0。啊,当然,谢谢你-使用skiprows=1对我来说是一个不好的例子,因为它跳过了我的标题。我用skiprows=[5]试过了,现在可以用了。我相信如果您将所有列的名称添加到
names
,您应该能够使用
usecols