首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >指定dtype时,Python pandas read_csv出现错误数据问题

指定dtype时,Python pandas read_csv出现错误数据问题
EN

Stack Overflow用户
提问于 2018-07-21 05:05:45
回答 1查看 141关注 0票数 0

我正在使用pandas 'read_csv‘从亚马逊s3存储桶中读取.csv文件。下面是我发布的声明:

代码语言:javascript
复制
xyz = pd.read_csv(io.BytesIO(obj['Body'].read()), dtype={'col1': str ,'col2':int,'col3':int ,'col4':int} ,encoding='latin-1')

这就是我的问题所在;col2包含一些特殊字符,比如“`”,而col3包含“:”。我想保留一个错误数据的日志,并只插入已更正的数据。

如果能帮上忙我会很感激的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-21 07:02:18

首先,您应该知道pandas允许您直接从S3读取内容,例如

代码语言:javascript
复制
xyz = pd.read_csv('s3://bucket/file.csv, dtype={..}, encoding='latin-1')

然而,这并不能解决您的坏数据问题。使用regex分隔符的python解析器引擎可能会拯救您,但似乎不太可能。

最简单的做法是逐行下载文件,并将错误的行放入另一个输出中

代码语言:javascript
复制
s3 = s3fs.S3FileSystem()
with s3.open('bucket/file.csv', 'rb') as fin:
    with open('out_good.csv', 'wb') as fgood:
        with open('out_bad.csv', 'wb') as fbad:
            for line in fin:
                if ':' in line or '`' in line:
                    fbad.write(line)
                else:
                    fgood.write(line)

另一种选择是编写你自己的类似文件的对象来读取行,进行文本解码,并提供read()/readline()方法让pandas工作(我认为它还需要像readable()这样的东西)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51450366

复制
相关文章

相似问题

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