Pandas读取带有起始特殊字符和可变跳过行数的CSV文件

7
使用pandas的read_csv方法读取CSV文件时,如果行数未知,如何跳过这些行?
我有一个CSV文件,其中包含一些元数据和标题及实际数据。元数据始终以#符号开头,并位于CSV文件的顶部。元数据所占行数不固定。
例如,对于文件sample_file.csv
# Meta-Data Line 1
# Meta-Data Line 2
# Meta-Data Line 3
col1,col2,col3
a,b,c
d,e,f
g,h,i

我该如何使用Pandas的read_csv函数和skiprows参数来读取CSV文件?
df = pd.read_csv('sample_file.csv', skiprows=?)

Pandas 0.19.X或更高版本是否支持此使用情况?
1个回答

7
您正在寻找的是注释
df = pd.read_csv('sample_file.csv', comment='#')

从文档中得知:

comment : str,默认为None

表示该行剩余部分不应被解析。如果在一行的开头找到它,整行将被忽略。该参数必须是一个单字符。与空行(只要skip_blank_lines=True)一样,完全注释的行被参数header忽略,但不被skiprows忽略。例如,如果comment='#',则使用header=0解析'#emptyna,b,cn1,2,3'将导致'a,b,c'被视为标题。


1
可以用。谢谢。 - Spandan Brahmbhatt
喜欢这个评论,但是我有一个包含160,000行的CSV文件。我需要注释掉其中大约一半的行。即使在尝试使用多重光标时,连Sublime Text都会出现问题。难道没有设置从哪一行开始的选项吗? - Ulf Gjerdingen
如上文档所示,skiprows参数将在开始解析之前跳过指定行数,但您必须确保知道要跳过的最少行数。不确定为什么仅凭注释就不足以使用。 - Zeugma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接