Python 如何在csv中读取,直到字段数过大

Python 如何在csv中读取,直到字段数过大,python,pandas,Python,Pandas,我有一个csv,我在其中阅读: df = pd.read_csv("file.csv") 所有的行都有37个字段,直到其中一行有38个字段,然后它就被破坏了。如何读取包含37个字段的行?预处理csv文件会更容易,只保留您感兴趣的行,然后继续使用您通常使用的pd.read\u csv方法 但是,如果您愿意尝试,您可以查看read_csv文档,其中似乎有一些有用的选项,如skiprows,例如预处理csv文件会更容易,只留下您感兴趣的行,继续使用pd.read\u csv方法,就像您通常做的那样

我有一个csv,我在其中阅读:

df = pd.read_csv("file.csv")

所有的行都有37个字段,直到其中一行有38个字段,然后它就被破坏了。如何读取包含37个字段的行?

预处理csv文件会更容易,只保留您感兴趣的行,然后继续使用您通常使用的
pd.read\u csv
方法


但是,如果您愿意尝试,您可以查看read_csv文档,其中似乎有一些有用的选项,如
skiprows
,例如预处理csv文件会更容易,只留下您感兴趣的行,继续使用
pd.read\u csv
方法,就像您通常做的那样


但是,如果您想尝试,您可以查看read_csv文档,其中似乎有一些有用的选项,如
skiprows
,例如您可以指定一系列列,只需使用
*
将其解压缩即可:

df = pd.read_csv("file.csv", usecols=[*range(37)])

您可以指定列的范围,只需使用
*
解包即可:

df = pd.read_csv("file.csv", usecols=[*range(37)])
从文档:

错误\u错误\u行:布尔值,默认为True

默认情况下,字段过多的行(例如,带有过多逗号的csv行)将引发异常,并且不会出现数据帧 被退回。如果为False,则这些“坏行”将从 返回的数据帧

因此,您可以使用:

df = pd.read_csv("file.csv", error_bad_lines=False)
但最好是编辑.csv文件并正确修复相关行。:)

从文档:

错误\u错误\u行:布尔值,默认为True

默认情况下,字段过多的行(例如,带有过多逗号的csv行)将引发异常,并且不会出现数据帧 被退回。如果为False,则这些“坏行”将从 返回的数据帧

因此,您可以使用:

df = pd.read_csv("file.csv", error_bad_lines=False)

但最好是编辑.csv文件并正确修复相关行。:)

您可以指定像df=pd.read\u csv(“file.csv”,nrows=37)这样的nrows。您可以指定像df=pd.read\u csv(“file.csv”,nrows=37)这样的nrows。是否有一种很好的方法来计算预处理每行中的字段数?是否有一种很好的方法来计算预处理每行中的字段数?谢谢。我需要这是自动化的,所以任何预处理也必须在脚本中。是否有一种很好的方法来计算每行中的字段数?我不确定这一点,如果您想完全使用Python,可以尝试使用模块来预处理错误。祝你的项目好运!显然
import csv def(s):返回映射(len,csv.reader(s.split(“\n”))
让我们来计算每行中的字段数,这基本上可以解决问题。谢谢。我需要将此过程自动化,以便在脚本中进行任何预处理。是否有一种很好的方法来计算每行中的字段数?我不确定这一点,如果您想完全使用Python,可以尝试使用该模块预处理错误。祝您的项目好运!显然
import csv def f(s):返回映射(len,csv.reader(s.split(“\n”))
让我们来计算每行中的字段数,这基本上可以解决问题。顺便说一句,您也可以通过将列表传递给列表构造函数来创建此列表,而不是使用
*
,如下所示:
usecols=list(范围(37))
。如果您使用Python2,那么
范围将自动成为一个列表,而不是生成器。如果您愿意,您可以在中编辑这些详细信息,或者我稍后(在mobile now上)进行编辑。顺便说一句,您也可以通过将其传递给列表构造函数来创建此列表,而不是使用
*
,如下图所示:
usecols=list(范围(37))
。如果您使用Python2,那么
范围将自动成为一个列表,而不是一个生成器。如果是这样,您可以在中编辑这些详细信息,或者我稍后再做(现在在手机上)