web-dev-qa-db-fra.com

Comment réparer tqdm progress_apply pour pandas dans Jupyter?

Je ne comprends pas vraiment s'il s'agit d'une erreur ou simplement de mon problème local, j'ai encore quelques problèmes avec l'utilisation de barres de progression tqdm avec progress_apply dans Jupyter.

Premier essai:

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

Sortie (sans aucune barre) :

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

Deuxième essai:

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

Sortie: Deux barres (besoin d'une). La première barre est vide (0it [00:00,? It/s]), la seconde est OK.

Des idées comment changer progress_apply description et barre d'affichage sans barre d'initialisation vide? :)

PS Documentation ( https://github.com/tqdm/tqdm ) dit que je peux simplement utiliser tqdm_notebook , mais ça ne marche pas pour moi :)

# 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!")
10
sortas

Réponse du développeur tqdm:

la prise en charge des ordinateurs portables est encore en phase bêta (tardive). L'API pourrait changer légèrement lorsque nous publierons tqdm v5 mais pour l'instant vous avez probablement besoin

from tqdm._tqdm_notebook import tqdm_notebook

tqdm_notebook.pandas(...
11
sortas

C'est ce que j'exécute dans mes blocs-notes jupyter, puis progress_apply fonctionne:

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

J'avais reçu une erreur sans le () après tqdm_notebook

6
Nic Scozzaro

En supposant que votre question porte sur la façon d'utiliser la barre d'état, par rapport aux ascètes de la barre d'état sur le bloc-notes Jupyter, votre code devrait être

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

Ce qui suit fonctionne pour moi:

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

Maintenant, vous pouvez simplement faire:

from tqdm.notebook import tqdm
tqdm.pandas()

df.progress_apply(...)

Ma version de tqdm est 4.39.0

1
Onno Eberhard