繁体   English   中英

计算块数

[英]Count number of chunks

我正在使用 chuncksize (pandas DataFrame) 读取大型 csv 文件,就像这样

reader = pd.read_csv('log_file.csv', low_memory = False, chunksize = 4e7)

我知道我可以计算它在文件中读取的块数,但我想自动执行并将块数保存到变量中,就像这样(在伪代码中)

number_of_chuncks = countChuncks(reader)

有任何想法吗?

您可以使用生成器表达式遍历 reader(当我们定义 chunksize 时 read_csv 返回的 TextFileReader)并为每次迭代求和:

number_of_chunks = sum(1 for chunk in reader)

或者,您可以使用生成器表达式来计算文件中的行数(类似于第一个选项的逻辑,但遍历文件的行),然后将此数字除以块大小并将结果四舍五入(使用数学.ceil)

import math
number_of_rows = sum(1 for row in open('log_file.csv', 'r'))
number_of_chunks = math.ceil(number_of_rows/chunksize)

或者

import math
number_of_chunks = math.ceil(sum(1 for row in open('log_file.csv', 'r'))/chunksize)

在我的测试中,第二个解决方案显示出比第一个更好的性能。

暂无
暂无

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

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