Pandasread_csv。行终止符出现在字符串中

Pandas read_csv. Line Terminator showing up in String

我有一个 txt 文件需要加载到 DataFrame 中,但行终止符出现在某些字符串值中。这会导致不需要的输出。

这是一些数据的示例以及我如何加载它:

data = '''
col1|col2|col3
vala1|vala2|vala3
valb1|val
b2|valb3
'''

df = pd.read_csv(io.StringIO(data), sep='|')

以及不需要的输出:

这是期望的输出:

数据来自第三方,我无法控制他们如何将数据提供给我们。

您可以尝试修复数据,但这在很大程度上取决于您的输入(是否有任何转义分隔符?等...)。

试试这个例子:

data = '''
col1|col2|col3
vala1|vala2|vala3
valb1|val
b2|valb3
'''

import pandas as pd
from itertools import groupby
from io import StringIO

def repair(data, num_cols=3):
    new_data = []
    for v, g in groupby(data.strip().splitlines(), lambda k: len(k.split('|')) == num_cols):
        if v:
            new_data.extend(g)
        else:
            new_data.append(''.join(g))
    return '\n'.join(new_data)

df = pd.read_csv(StringIO(repair(data, 3)), sep='|')
print(df)

打印:

    col1   col2   col3
0  vala1  vala2  vala3
1  valb1  valb2  valb3