熊猫读取以空行作为分隔符的文件

时间:2019-12-17 07:47:54

标签: python-3.x pandas file-io

我有一个用空行作为分隔符的文件。我的文件看起来像这样

A B C

D  F

A K F
G H

123 AB 34
34 GE PQ 56

在上述格式中,行分隔符为空行。如何使用pandas读取此类文件? 首先,我想,我将使用常规的read_csv函数,然后将所有行合并,直到将空行合并为单行。但这似乎不是很简单。检测空行并合并未索引的行似乎是不可能的。

有什么解决方法可以解决我的问题?我不想明确更改文件的格式,因为文件是由外部提供商提供的并以在线方式处理

1 个答案:

答案 0 :(得分:1)

this solution与连接列表一起使用,并追加到DataFrame的构造函数中:

def per_section(it, is_delimiter=lambda x: x.isspace()):
    ret = []
    for line in it:
        if is_delimiter(line):
            if ret:
                yield ''.join(ret)
                ret = []
        else:
            ret.append(line.rstrip())
    if ret:
        yield ''.join(ret)

with open("data.txt") as f:
    s = list(per_section(f))
    df = pd.DataFrame({'data':s})
    print (df)
                   data
0                 A B C
1                  D  F
2              A K FG H
3  123 AB 3434 GE PQ 56