我在我试图解析的csv文件中将\x02\n作为行终止符。然而,我不能在熊猫中使用两个字符,它只允许一个字符,例如:
>>> data = pd.read_csv(file, sep="\x01", lineterminator="\x02")
>>> data.loc[100].tolist()
['\n1475226000146', '1464606', 'Juvenile', '1', 'http://itunes.apple.com/artist/juvenile/id1464606?uo=5', '1']或者:
data = pd.read_csv(file, sep="\x01", lineterminator="\n")
>>> data.loc[100].tolist()
['1475226000146', '1464606', 'Juvenile', '1', 'http://itunes.apple.com/artist/juvenile/id1464606?uo=5', '1\x02']在这里,我们可以看到,\n没有被正确地砍掉。使用上述分隔符读取熊猫csv文件的最佳方法是什么?
发布于 2018-12-19 05:19:01
截止到0.23版,熊猫不支持多字符的终端机。您的代码当前返回:
s = "this\x01is\x01test\x02\nthis\x01is\x01test2\x02"
df = pd.read_csv(
pd.compat.StringIO(s), sep="\x01", lineterminator="\x02", header=None)
df
0 1 2
0 this is test
1 \nthis is test2您的唯一选项(到目前为止)是从第一列中移除前面的空格。您可以使用str.lstrip来完成这个任务。
df.iloc[:, 0] = df.iloc[:, 0].str.lstrip()
# Alternatively,
# df.iloc[:, 0] = [s.lstrip() for s in df.iloc[:, 0]]
df
0 1 2
0 this is test
1 this is test2如果您必须处理多个其他类型的线终止符的剥离(除了换行符),您可以传递其中的字符串:
line_terminators = ['\n', ...]
df.iloc[:, 0] = df.iloc[:, 0].str.lstrip(''.join(line_terminators))https://stackoverflow.com/questions/53844875
复制相似问题