如何在Jupyter中修复pandas的tqdm progress_apply问题?

33

我不太明白这是个错误还是我的本地问题,使用Jupyter中的progress_apply时仍然存在一些使用tqdm进度条的问题。

第一次尝试:

from tqdm import tqdm
tqdm_notebook.pandas(desc="Example Desc")
keywords_df['keyword'] = keywords_df['keywird'].progress_apply(lambda x: x.replace('*',''))

输出(没有任何杠)

AttributeError: 'function' object has no attribute 'pandas'

第二次尝试:

from tqdm import tqdm
tqdm_notebook().pandas(desc="Example Desc")
keywords_df['keyword'] = keywords_df['keywird'].progress_apply(lambda x: x.replace('*',''))

输出: 两个进度条(只需一个)。第一个进度条为空(0it [00:00,?it/s]),第二个进度条正常。

有什么办法可以更改progress_apply的描述并在没有空初始化进度条的情况下显示进度条? :)

P.S. 文档(https://github.com/tqdm/tqdm)说我可以使用 tqdm_notebook,但对我无效 :)

# Register `pandas.progress_apply` and `pandas.Series.map_apply` with `tqdm`
# (can use `tqdm_gui`, `tqdm_notebook`, optional kwargs, etc.)
tqdm.pandas(desc="my bar!")
5个回答

48

现在你只需要执行:

from tqdm.notebook import tqdm
tqdm.pandas()

df.progress_apply(...)

我使用的 tqdm 版本是 4.39.0


16

tqdm 开发者的回答:

notebook 支持仍处于(后期)测试阶段。当我们发布 tqdm v5 时,API 可能会略微改变,但目前您可能需要使用它。

from tqdm._tqdm_notebook import tqdm_notebook

tqdm_notebook.pandas(...

11

这是我在Jupyter笔记本中运行的代码,然后progress_apply函数可以工作:

from tqdm import tqdm, tqdm_notebook
tqdm_notebook().pandas()

在使用tqdm_notebook时,我没有加上()导致出现了一个错误。


8
假设您的问题与如何使用状态栏有关,则应该使用以下代码,而不是关于Jupyter NoteBook中的状态栏美学方面的内容。
tqdm.pandas(desc="Example Desc")
keywords_df['keyword'] = keywords_df['keywird'].progress_apply(lambda x: x.replace('*',''))

美观度非常重要,这是使用tqdm_notebook(而不仅仅是tqdm)的主要原因。此外,tqdm_notebook可以与嵌套进度条一起使用,而静态的tqdm在colorama方面存在一些问题 :) - sortas

8
以下内容在我的情况下有效:
from tqdm import tqdm
tqdm.pandas()
keywords_df['keyword'] = keywords_df['keywird'].progress_apply(lambda x: x.replace('*',''))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接