读取 Pandas 中的 CSV 文件,中间有空行

Bha*_*kar 4 python csv pandas

我有一个像这样的 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  
...
Run Code Online (Sandbox Code Playgroud)

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

我尝试使用读取此文件

df = pd.read_csv('data.csv',header=0)
Run Code Online (Sandbox Code Playgroud)

然后它抛出一个错误说

UnicodeDecodeError : 'utf-8' codec cant decode byte 0xb2 in position 3: invalid start byte
Run Code Online (Sandbox Code Playgroud)

然后,我尝试了这个

df = pd.read_csv('data.csv',header=0,error_bad_lines=True)
Run Code Online (Sandbox Code Playgroud)

但这也没有给出预期的结果。我们如何才能只读到 csv 文件中的第一个空行?

Eir*_*Nym 5

您可以创建一个逐行读取文件的生成器。结果被传递到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)
Run Code Online (Sandbox Code Playgroud)