2017-09-06 40 views
0

我试图在文件加载到熊猫时显示进度条。但是我所能得到的就是这个。(Python/tqdm)在使用熊猫时获取所有的零计时器

0it [00:00, ?it/s] 

这是我正在使用的代码。
我正在根据我找到的一些示例导入tqdm。

from tqdm import tqdm 
... 

def function(self): 
    params = self.getGuiParams() 
    filename = params['fileNameLineEdit'] 
    keyname = params['dataSetNameLineEdit'] 
    try: 
     print('Loading data file: ' + str(filename)) 
     self.datakeys.append(keyname) 
     chunksize = 50000 
     df = tqdm(pd.read_csv(filename, header=[0, 1], chunksize=chunksize, iterator=True)) 
     self.data[keyname] = spectral_data(df) 
    except Exception as e: 
     print('Problem reading data: {}'.format(e)) 

回答

1

tqdm需要迭代器。在read_csv中使用iterator=True选项时,您正在将生成的TextFileReader对象分配回df,而不实际迭代它。

试着这么做:

tfr = pd.read_csv(filename, header=[0, 1], chunksize=chunksize, iterator=True 
with tqdm() as pbar: 
    # do something with the chunk 
    pbar.update() 

我从来没有用过tqdm,这样可以不开箱的工作 - 你可能需要计算文件的大小和多少块,将采取等

+0

我得到一个'AttributeError:'TextFileReader'对象没有属性'columns''错误。这是什么意思? – tisaconundrum

+0

不知道更多,TextFileReader对象没有一个名为'列'的属性 - 但你想通过'tfr.columns'访问它' –

+0

检查出'TextFileReader'的文档,以及如何使用遍历块它从文件中读取。 http://pandas.pydata.org/pandas-docs/stable/io.html#io-chunking –