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
我有一个 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