繁体   English   中英

Pandas read_csv 静默失败

[英]Pandas read_csv fails silently

我正在尝试将平面文件加载到 python pandas 数据框中。 使用 Python 3.8.3 和 pandas 版本 1.0.5

read_csv代码是这样的:

import pandas as pd
df =  pd.read_csv(myfile, sep='|', usecols=[0], names=["ID"],
                    dtype=str,
                    encoding='UTF-8', 
                    memory_map=True,
                    low_memory=True, engine='c')
print('nb entries:', df["ID"].size)

这给了我一些条目。 但是,这与我使用以下代码获得的条目数不匹配:

num_lines = sum(1 for line in open(myfile, encoding='UTF-8')
print('nb lines:', num_lines)

我没有收到错误消息。

我尝试了几个选项(有/没有编码,有/没有低 memory,有或没有 memory map,有或没有 warn_bad_lines,有 c 引擎或默认引擎),但我总是得到相同的错误结果。

通过更改nrows参数,我确定了文件中的问题所在。 我将感兴趣的行复制到测试文件中,然后在测试文件上重新运行代码。 这次我得到了正确的结果。

现在我意识到我的机器在 memory 上有点短,所以可能一些分配失败了。 有没有办法对此进行测试? 我尝试在没有打开任何其他应用程序的情况下运行脚本,但我得到了同样的错误结果。

我应该如何解决此类问题?

像这样的东西可以用来分块读取文件

import pandas as pd
import numpy as np

n_rows = sum(1 for _ in open("./test.csv", encoding='UTF-8')) - 1
chunk_size = 300
n_chunks = int(np.ceil(n_rows / chunk_size))


read_lines = 0
for chunk_idx in range(n_chunks):
    df = pd.read_csv("./test.csv", header=0, skiprows=chunk_idx*chunk_size, nrows=chunk_size)
    read_lines += len(df)

print(read_lines)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM