我有一个txt文件,需要加载到DataFrame中,但是行终止符显示在某些字符串值中。这会导致不希望的输出。
以下是一些数据以及如何加载的示例:
data = '''
col1|col2|col3
vala1|vala2|vala3
valb1|val
b2|valb3
'''
df = pd.read_csv(io.StringIO(data), sep='|')
和不希望的输出:
这是所需的输出:
数据来自第三方,我对它们如何提供给我们没有太多控制权。
答案 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