Pandas 当使用iterator=True时,如何获得Dataframe的总行数
我处理的是不适合内存的大文件,因此我使用Pandas的Dataframe的迭代器功能,每次处理单个块Pandas 当使用iterator=True时,如何获得Dataframe的总行数,pandas,Pandas,我处理的是不适合内存的大文件,因此我使用Pandas的Dataframe的迭代器功能,每次处理单个块 pd.read_csv(csv_file_name, encoding='utf-8', chunksize=chunk_size, iterator=True, engine='c', error_bad_lines=False, low_memory=False) 在处理过程中,我想打印已处理行的数量以
pd.read_csv(csv_file_name, encoding='utf-8', chunksize=chunk_size, iterator=True,
engine='c', error_bad_lines=False, low_memory=False)
在处理过程中,我想打印已处理行的数量以及已处理行占总行数的百分比
要获取我正在使用的Pandas数据帧中的行总数
len(df.index)
但是当我试着用它的时候,当我用iRator的时候
AttributeError: 'TextFileReader' object has no attribute 'index'
有办法吗?(虽然不检查每个块)我将使用两种可能的解决方法:
columns
选项,只需一列即可读入文件。它可能足够小,您可以一次读取,但如果不遍历它,则可以计算行数wc-l
计算行数。如果你有一个标题,你需要删除一个。
e、 g在处理数据块之前,您不会知道错误行,因此最多只能得到最终总数的估计值。如果估计值足够好,不妨打印csv中的行数:看看是否需要帮助。Kent Shikama的评论链接到一个问题,其中有一些比我更好的建议:-)我对他的评论投了赞成票。
wc_output = subprocess.run(['wc','-l', 'csv_file_name'])
# wc_output.stdout will be of format ` N_lines filename`
# subtract 1 to remove header
n_rows = int(wc_output.stdout.split()[0]) - 1