熊猫read_csv。行终止符显示在字符串中

时间:2020-01-02 20:53:37

标签: python pandas newline

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

以下是一些数据以及如何加载的示例:

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

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

和不希望的输出:

enter image description here

这是所需的输出:

enter image description here

数据来自第三方,我对它们如何提供给我们没有太多控制权。

1 个答案:

答案 0 :(得分:2)

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

尝试以下示例:

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