CSV导入熊猫时跳过行


97

我正在尝试使用导入.csv文件pandas.read_csv(),但是我不想导入数据文件的第二行(索引为0的索引为1的行)。

我看不到如何不导入它,因为与命令一起使用的参数似乎模棱两可:

从熊猫网站:

skiprows :类列表或整数

文件开头要跳过的行号(索引为0)或要跳过的行数(整数)。”

如果输入skiprows=1参数,它如何知道是跳过第一行还是跳过索引为1的行?


2
我猜想它表明它可以是“类似于列表或整数”,然后为您提供两个选项(开始时跳过行或跳过#行),然后如果您给它列表[1],它将仅跳过行1(第二行)。如果您给它一个整数(例如10),那么它将跳过前10行。
Ffisegydd 2013年

1
伟大的工作。非常感谢。只是想知道它将如何区分索引和整数。答案是。
thosphor 2013年

Answers:


144

您可以尝试:

>>> import pandas as pd
>>> from StringIO import StringIO
>>> s = """1, 2
... 3, 4
... 5, 6"""
>>> pd.read_csv(StringIO(s), skiprows=[1], header=None)
   0  1
0  1  2
1  5  6
>>> pd.read_csv(StringIO(s), skiprows=1, header=None)
   0  1
0  3  4
1  5  6

是的,我只需要知道索引是在方括号中指定的[]
thosphor 2013年

11
在Python 3中: from io import StringIO
Dima Lituiev

^完全不需要导入,可以直接访问pd.compat.StringIO
cs95

30

我尚无任何评论的信誉,但我想添加到alko答案以供进一步参考。

文档

skiprows:文件中要跳过的行的数字集合。也可以是整数以跳过前n行


14

在读取csv文件时运行行列时遇到相同的问题。我当时在做skip_rows = 1这行不通

一个简单的示例给出了一个在读取csv文件时如何使用跳栏的想法。

import pandas as pd

#skiprows=1 will skip first line and try to read from second line
df = pd.read_csv('my_csv_file.csv', skiprows=1)  ## pandas as pd

#print the data frame
df

1

所有这些答案都遗漏了一个重要点-第n行是文件中的第n行,而不是数据集中的第n行。我遇到从USGS下载一些过时的流量表数据的情况。数据集的开头用“#”注释,其后的第一行是标签,下一行是描述日期类型的行,最后是数据本身。我不知道有多少条注释行,但是我知道前几行是什么。例:

- - - - - - - - - - - - - - - 警告 - - - - - - - - - - --------------

您从此美国地质调查局数据库中获得的一些数据

可能尚未获得董事的批准。... agency_cd site_no datetime tz_cd 139719_00065 139719_00065_cd

5s 15s 20d 6s 14n 10s USGS 08041780 2018-05-06 00:00 CDT 1.98 A

如果有一种方法可以自动跳过第n行和第n行,那就太好了。

作为说明,我能够通过以下方式解决问题:

import pandas as pd
ds = pd.read_csv(fname, comment='#', sep='\t', header=0, parse_dates=True)
ds.drop(0, inplace=True)


-8

另外,请确保您的文件实际上是CSV文件。例如,如果您有一个.xls文件,并且只是将文件扩展名更改为.csv,则该文件将不会导入,并且会出现上述错误。要检查是否是您的问题,请在excel中打开文件,该文件可能会显示:

“'Filename.csv'的文件格式和扩展名不匹配。该文件可能已损坏或不安全。除非您信任它的来源,否则请不要打开它。是否仍要打开它?”

修复文件:在Excel中打开文件,单击“另存为”,选择要另存为的文件格式(使用.cvs),然后替换现有文件。

这是我的问题,并为我修复了错误。


9
这可能是您的问题,但与该问题无关,也未尝试回答。它只是解释了您遇到的其他问题。您还可以说“还记得为笔记本电脑充电,我的电池没电了,我丢失了所有的
零钱
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.