[英]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.