在csv导入pandas期间跳过行

时间:2013-12-17 14:59:35

标签: python csv pandas

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

我看不出如何导入它,因为与命令一起使用的参数看起来很模糊:

来自熊猫网站:

  

skiprows:类似列表或整数

     

要跳过的行号(0索引)或要跳过的行数(int)   文件的开头。“

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

6 个答案:

答案 0 :(得分:114)

你可以尝试自己:

>>> 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

答案 1 :(得分:26)

我还没有发表评论的声誉,但我想添加alko答案以供进一步参考。

来自docs

  

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

答案 2 :(得分:2)

在读取csv文件时运行跳过栏时遇到了相同的问题。 我当时没有skip_rows = 1,这行不通

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

import pandas as pd

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

#print the data frame
df

答案 3 :(得分: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)

答案 4 :(得分:-2)

skip[1]将跳过第二行,而不是第一行。

答案 5 :(得分:-5)

同样 确保您的文件实际上是CSV文件。 例如,如果您有.xls文件,只需将文件扩展名更改为.csv,该文件将不会导入,并将给出上述错误。要检查这是否是您的问题,请在excel中打开该文件,它可能会说:

“'Filename.csv'的文件格式和扩展名不匹配。文件可能已损坏或不安全。除非您信任其来源,否则请不要打开它。无论如何要打开它吗?”< / p>

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

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