首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Pandas中读取CSV文件,中间有空行

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

Stack Overflow用户
提问于 2018-10-19 05:20:38
回答 2查看 2.4K关注 0票数 3

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

代码语言:javascript
复制
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。

我尝试使用以下命令读取此文件

代码语言:javascript
复制
df = pd.read_csv('data.csv',header=0)

然后抛出一个错误说

代码语言:javascript
复制
UnicodeDecodeError : 'utf-8' codec cant decode byte 0xb2 in position 3: invalid start byte

然后,我尝试了这个

代码语言:javascript
复制
df = pd.read_csv('data.csv',header=0,error_bad_lines=True)

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-19 05:39:48

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

代码语言:javascript
复制
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)
票数 4
EN

Stack Overflow用户

发布于 2018-10-19 05:40:19

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

代码语言:javascript
复制
pd.read_csv('file.csv',nrows= count )

大致是这样的:

代码语言:javascript
复制
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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52882771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档