我有一个不均匀的 csv 文件,我想读入 pandas。该文件看起来像这样:
2016-01-01; 1.00; 2.00
2016-01-02; 1,10; 2.05
2016-01-03; 0.95; 1.90
Some other text in here
2016-01-04; 1.01; 2.04
Some more text there
2016-01-05; 1.06; 2.07
我只需要文本行,这样我就可以跳过以日期开头的行。我尝试了几种策略来读取它并过滤我们所需的数据,但到目前为止没有任何效果。我所知道的是文本行总是以一个特殊的词开头(本例中为“some”)。但是,没有固定的行号可以使用。
如果您想丢弃以单个特殊字符开头的行,您可以使用read_csv
的comment
参数,正如@cel 在上面的评论中指出的那样。
否则,您可以使用常规 Python 逻辑从迭代器中过滤掉项目,并使用 CStringIO
。
例如,要丢弃以"some"
开头的行,您可以使用:
import CStringIO
buf = StringIO.StringIO('\n'.join((l for l in open('stuff.txt') if not l.startswith('Some'))))
pd.read_csv(buf, sep=';')
相反,如果您实际上只需要以"some"
开头的行,则使用
buf = StringIO.StringIO('\n'.join((l for l in open('stuff.txt') if l.startswith('Some'))))
我是一名优秀的程序员,十分优秀!