读取熊猫中的CSV文件,中间插入空白行

时间:2018-10-18 21:20:38

标签: python pandas csv

我有一个像这样的data.csv文件

Col1,Col2,Col3,Col4,Col5  
10,12,14,15,16  
18,20,22,24,26  
28,30,32,34,36  
38,40,42,44,46  
48,50,52,54,56

Col6,Col7  
11,12  
13,14  
...

现在,我只想读取Col1到Col5列的数据,不需要Col6和Col7。

我尝试使用

读取此文件
df = pd.read_csv('data.csv',header=0)

然后抛出错误提示

UnicodeDecodeError : 'utf-8' codec cant decode byte 0xb2 in position 3: invalid start byte

然后,我尝试了

df = pd.read_csv('data.csv',header=0,error_bad_lines=True)

但是,这也没有得到期望的结果。我们如何只能读取到csv文件中的第一个空白行?

2 个答案:

答案 0 :(得分:2)

您可以创建一个生成器,以逐行读取文件。结果传递到pandas

import pandas as pd
import io


def file_reader(filename):
    with open(filename) as f:
        for line in f:
            if line and line != '\n':
                yield line
            else:
                break


data = io.StringIO(''.join(file_reader('data.csv')))
df = pd.read_csv(data)

答案 1 :(得分:1)

Pandas没有选项可以在某个条件下停止,但是它确实具有在n行之后停止的条件。因此,您可以先读取文件,计算行数直到空白,然后使用

加载大熊猫
pd.read_csv('file.csv',nrows= count )

大致如下:

count = 0
with open(filename) as f:
    for line in f:
        if line and line != '\n':
            count += 1
        else:
            break

pd.read_csv(filename,nrows=count)