Pandas:如何读取包含多行文本的CSV文件?

4

我有一个csv文件,但是无法使用read_csv读取它。 使用sublime text打开这个csv文件会显示如下内容:

col1,col2,col3
text,2,3
more text,3,4
HELLO

THIS IS FUN
,3,4

从上面的例子可以看出,文本HELLO THIS IS FUN占用了三行,而pd.read_csv将其视为三个新的观测值,导致混淆。在 Pandas 中如何正确解析这个问题呢?

谢谢!


1
有趣的问题。如果我们不把新行视为新的观察结果,那么我们怎么知道在“text,2,3”上,它真的应该是“text,2,3 more text”?我不确定你能否用这种输入正确地格式化它。 - Scott Boston
1
我会在纯Python中打开它,并用一个下划线替换所有的空格。您可以通过新行字符中逗号的缺失来识别行。这种行为是否与大写字母一致? - Moritz
谢谢@moritz。好主意。你能否写一些伪代码来实现它? - ℕʘʘḆḽḘ
4
什么?你有3k+的声望了。我认为你可以自己做到。你熟悉“with open('file', 'r') as f: for line in f: do something”这个语法吗? - Moritz
我想给你展现自己的机会!!! :D - ℕʘʘḆḽḘ
显示剩余3条评论
1个回答

1

看起来您需要手动预处理数据:

with open('data.csv','r') as f:
    lines = f.read().splitlines()
processed = []
cum_c = 0
buffer = ''
for line in lines:
    buffer += line # Append the current line to a buffer
    c = buffer.count(',')
    if cum_c == 2:
        processed.append(line)
        buffer = ''
    elif cum_c > 2:
        raise # This should never happen

这里假设您的数据只包含不需要的换行符,例如,如果您的数据在一行中有3个元素,在下一行中有2个元素,则下一行应为空白或仅包含1个元素。如果它有2个或更多元素,即缺少必要的换行符,则会抛出错误。如有必要,您可以通过进行轻微修改来处理此情况。
实际上,删除换行符可能更有效率,但除非您有大量数据,否则不应该有影响。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接