pandas read_csv 修复列以读取数据中带有换行符的数据

Vla*_*lad 5 python regex pandas

使用 Pandas 读取大的制表符分隔文件

df = pd.read_csv(file_path, sep='\t', encoding='latin 1', dtype = str, keep_default_na=False, na_values='')
Run Code Online (Sandbox Code Playgroud)

问题是有 200 列,第 3 列是偶尔带有换行符的文本。文本没有用任何特殊字符分隔。这些行被分成多行,数据进入错误的列。

每行都有固定数量的选项卡 - 这就是我所要做的。

piR*_*red 5

这个想法是使用正则表达式来查找由给定数量的制表符分隔并以换行符结尾的所有内容实例。然后采取所有这些并创建一个数据框。

import pandas as pd
import re

def wonky_parser(fn):
    txt = open(fn).read()
    #                          This is where I specified 8 tabs
    #                                        V
    preparse = re.findall('(([^\t]*\t[^\t]*){8}(\n|\Z))', txt)
    parsed = [t[0].split('\t') for t in preparse]
    return pd.DataFrame(parsed)
Run Code Online (Sandbox Code Playgroud)

将文件名传递给函数并取回数据帧。