如何在 Jupyter 中为 pandas 修复 tqdm progress_apply?

How to fix tqdm progress_apply for pandas in Jupyter?

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

第一次尝试:

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]),第二个是 OK.

有什么想法可以更改 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!")

假设您的问题是关于如何使用状态栏,与 Jupyter NoteBook 上状态栏的苦行者相比,那么您的代码应该是

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

Answer 来自 tqdm 开发者:

notebook support is still in a (late) beta stage. The API might change slightly when we release tqdm v5 but for now you probably need

from tqdm._tqdm_notebook import tqdm_notebook

tqdm_notebook.pandas(...

这就是我在我的 jupyter 笔记本中 运行,然后 progress_apply 的作品:

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

在 tqdm_notebook

之后没有 () 时出现错误

以下对我有用:

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

现在你只需要做:

from tqdm.notebook import tqdm
tqdm.pandas()

df.progress_apply(...)

我的 tqdm 版本是 4.39.0