在csv导入pandas期间跳过行

tho*_*hor 78 python csv pandas

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

我无法看到如何导入它,因为与命令一起使用的参数似乎不明确:

来自熊猫网站:

skiprows :列表式或整数

要在文件开头跳过(0索引)或要跳过的行数(int)的行号."

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

alk*_*lko 122

你可以尝试自己:

>>> 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
Run Code Online (Sandbox Code Playgroud)

  • 在Python 3中:`来自io import StringIO` (8认同)

小智 27

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

来自文档:

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


Vir*_*oop 20

我在读取 csv 文件时运行 skiprows 时遇到了同样的问题。我正在做 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
Run Code Online (Sandbox Code Playgroud)


EBo*_*EBo 5

所有这些答案都忽略了一个重要的点——第 n 行是文件中的第 n 行,而不是数据集中的第 n 行。我遇到过这样的情况:我从美国地质调查局下载了一些过时的流量计数据。数据集的头部用“#”进行注释,之后的第一行是标签,接下来是描述日期类型的行,最后是数据本身。我不知道有多少注释行,但我知道前几行是什么。例子:

> # ----------------------------- WARNING ----------------------------------
> # Some of the data that you have obtained from this U.S. Geological Survey database
> # may not have received Director's approval. ... 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
Run Code Online (Sandbox Code Playgroud)

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

请注意,我能够通过以下方式解决我的问题:

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