当前位置:  开发笔记 > 编程语言 > 正文

跳过未知行数来读取标题python pandas

如何解决《跳过未知行数来读取标题pythonpandas》经验,为你挑选了1个好方法。

我有一个excel数据,我用python pandas读入:

import pandas as pd
data = pd.read_csv('..../file.txt', sep='\t' )

模拟数据看起来像这样:

unwantedjunkline1
unwantedjunkline2
unwantedjunkline3
 ID     ColumnA     ColumnB     ColumnC
 1         A          B            C
 2         A          B            C
 3         A          B            C
...

在这种情况下,数据包含3个垃圾行(我不想读入的行),然后点击标题,有时它包含4个或更多的垃圾行.所以在这种情况下我读了数据:

data = pd.read_csv('..../file.txt', sep='\t', skiprows = 3 )

数据看起来像:

 ID     ColumnA     ColumnB     ColumnC
 1         A          B            C
 2         A          B            C
 3         A          B            C
...

但是每次不需要的行数不同时,是否有办法使用pandas读取表文件而不使用'skiprows =',而是使用一些匹配头的命令,以便它知道从头开始读取?所以我不必单击打开文件来计算每次文件包含多少不需要的行,然后手动更改'skiprows ='选项.



1> Padraic Cunn..:

如果你知道标题的开头:

def skip_to(fle, line,**kwargs):
    if os.stat(fle).st_size == 0:
        raise ValueError("File is empty")
    with open(fle) as f:
        pos = 0
        cur_line = f.readline()
        while not cur_line.startswith(line):
            pos = f.tell()
            cur_line = f.readline()
        f.seek(pos)
        return pd.read_csv(f, **kwargs)

演示:

In [18]: cat test.txt
1,2
3,4
The,header
foo,bar
foobar,foo
In [19]: df = skip_to("test.txt","The,header", sep=",")

In [20]: df
Out[20]: 
      The header
0     foo    bar
1  foobar    foo

通过调用.tell我们跟踪指针在前一行的位置,所以当我们点击标题时,我们寻找回到该行并将文件对象传递给pandas.

或者使用垃圾,如果它们都是从一些共同点开始的:

def skip_to(fle, junk,**kwargs):
    if os.stat(fle).st_size == 0:
        raise ValueError("File is empty")
    with open(fle) as f:
        pos = 0
        cur_line = f.readline()
        while cur_line.startswith(junk):
            pos = f.tell()
            cur_line = f.readline()
        f.seek(pos)
        return pd.read_csv(f, **kwargs)

 df = skip_to("test.txt", "junk",sep="\t")

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有