32

Don't really understand is it a mistake or just my local problem, still have some issues with using tqdm progress bars with progress_apply in Jupyter.

First try:

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

Output (without any bars):

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

Second try:

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

Output: Two bars (need one). First bar is empty (0it [00:00, ?it/s]), second is OK.

Any ideas how to change progress_apply description and display bar without empty initialization bar? :)

P.S. Documentation (https://github.com/tqdm/tqdm) says I can just use tqdm_notebook, but it's not working for me :)

# 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!")
sortas
  • 1,527
  • 3
  • 20
  • 29

5 Answers5

47

Now you can just do:

from tqdm.notebook import tqdm
tqdm.pandas()

df.progress_apply(...)

My version of tqdm is 4.39.0

Onno Eberhard
  • 1,341
  • 1
  • 10
  • 18
16

Answer from tqdm developer:

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(...
sortas
  • 1,527
  • 3
  • 20
  • 29
11

This is what I run in my jupyter notebooks, and then progress_apply works:

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

I had been getting an error without the () after tqdm_notebook

Nic Scozzaro
  • 6,651
  • 3
  • 42
  • 46
8

Assuming your question is about how to use the status bar, vs the ascetics of the status bar on the Jupyter NoteBook then your code should be

tqdm.pandas(desc="Example Desc")
keywords_df['keyword'] = keywords_df['keywird'].progress_apply(lambda x: x.replace('*',''))
DJK
  • 8,924
  • 4
  • 24
  • 40
  • Ascetics quite important, because it's the main reason to use tqdm_notebook (not just tqdm). Also, tqdm_notebook works with nested bars, while static tqdm has some issues with colorama :) – sortas Aug 09 '17 at 20:54
8

The following is working for me:

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