Python 同时使用usecols和skiprows(在Pandas read_csv中)会产生错误
我使用Pandas v0.18.1中的read_csv来读取一些数据。我想从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
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