熊猫:如何在同一个单元格中读取多行的csv?

时间:2017-05-03 13:33:34

标签: python csv pandas

我有csv我无法使用read_csv阅读 使用sublime文本打开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 个答案:

答案 0 :(得分: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个或更多,即它缺少必要的换行符,则抛出错误。如有必要,您可以通过微小的修改来适应这种情况。

实际上,删除换行符可能更有效,但除非您拥有批次数据,否则无关紧要。