如何在初始化DataFrame时创建进度条?

5 投票
1 回答
4630 浏览
提问于 2025-04-18 13:14

我想在每次加载一个新的行到数据框(dataframe)时,获取当前的行数,这个数据是从一个.csv文件中读取的:

def file_len(fname):
    with open(fname) as f:
        for i, l in enumerate(f):
            pass
    return i + 1

csv_path = "C:/...."
max_length = file_len(csv_path)

data = read_csv(csv_path, sep=';', encoding='utf-8')

用这段代码我能得到最大行数,但我不知道怎么在每次创建新行时获取当前的数据框行数。我想用这些行数来制作一个0到100%的进度条。

1 个回答

6

你不能这样做——你需要修改 read_csv 函数,可能还要改其他的 pandas 函数。


编辑:

现在似乎可以通过 chunksize=rows_number 来实现。

仅使用 iterator=True 对我来说不管用——或者可能是需要更多的行。

感谢 Jeff

试试这个

import pandas as pd

from StringIO import StringIO

data = """A,B,C
foo,1,2,3
bar,4,5,6
baz,7,8,9
"""

reader = pd.read_csv(StringIO(data), chunksize=1)

for x in reader:
    print x
    print '--- next data ---'

结果:

     A  B  C
foo  1  2  3
--- next data ---
     A  B  C
bar  4  5  6
--- next data ---
     A  B  C
baz  7  8  9
--- next data ---

撰写回答