Python 在csv导入期间跳过行

Python 在csv导入期间跳过行,python,csv,pandas,Python,Csv,Pandas,我正在尝试使用pandas.read_csv()导入.csv文件,但是我不想导入数据文件的第二行(索引为1的行表示0-index) 我看不出如何不导入它,因为命令使用的参数似乎不明确: 从熊猫网站: skiprows:类似列表或整数 此时要跳过的行数(0索引)或要跳过的行数(int) “文件的开头。” 如果我将skiprows=1放在参数中,它如何知道是跳过第一行还是跳过索引为1的行?您可以自己尝试: >>> import pandas as pd >>> f

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

我看不出如何不导入它,因为命令使用的参数似乎不明确:

从熊猫网站:

skiprows
:类似列表或整数

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

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

您可以自己尝试:

>>> 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
你可以自己试试:

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

我还没有什么好评论的,但我想补充一下,以供进一步参考

从:

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


我还没有什么好评论的,但我想补充一下,以供进一步参考

从:

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

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

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

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

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

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

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

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


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

我在读取csv文件时运行skiprows时遇到了相同的问题。 我正在跳过行=1,这不起作用

这个简单的例子给出了如何在读取csv文件时使用skiprows的想法

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

我在读取csv文件时运行skiprows时遇到了同样的问题。 我正在跳过行=1,这不起作用

这个简单的例子给出了如何在读取csv文件时使用skiprows的想法

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]
将跳过第二行,而不是第一行。

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

所有这些答案都忽略了一个重要点——第n行是文件中的第n行,而不是数据集中的第n行。我有一种情况,我从美国地质勘探局下载了一些过时的测流仪数据。数据集的标题用“#”注释,后面的第一行是标签,接下来是一行,描述日期类型,最后是数据本身。我不知道有多少注释行,但我知道前几行是什么。示例:

-----------------------------警告---------------------------------- 您从美国地质调查局数据库获得的一些数据 可能未收到董事的批准…机构光盘站点无日期tz光盘139719\U 00065 139719\U 00065\U光盘 5s 15s 20d 6s 14n 10s美国地质勘探局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)

所有这些答案都忽略了一个重要点——第n行是文件中的第n行,而不是数据集中的第n行。我有一个情况,我从美国地质勘探局下载了一些过时的水位计数据。数据集的开头用“#”注释,后面的第一行是标签,接下来是描述数据的一行e类型,最后是数据本身。我不知道有多少注释行,但我知道前几行是什么。示例:

-----------------------------警告---------------------------------- 您从美国地质调查局数据库获得的一些数据 可能未收到董事的批准…机构光盘站点无日期tz光盘139719\U 00065 139719\U 00065\U光盘 5s 15s 20d 6s 14n 10s美国地质勘探局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)

我猜它可以是“类似列表或整数”,然后给你两个选项(开始时跳过行或跳过#行),如果你给它列表[1],它只会跳过第1行(第2行)。如果你给它一个整数(例如10)然后它会跳过前10行。这很好。非常感谢。我只是想知道它会如何区分索引和int。[]是答案。我猜它可以是“类似列表或整数”,然后给你两个选项(开始时跳过行或跳过#行),如果你给它列表[1]它只会跳过第1行(第2行)。如果你给它一个整数(例如10),那么它会跳过前10行。这很好。非常感谢。只是想知道它如何区分索引