Как исправить tqdm progress_apply для панд в Jupyter?

Не совсем понимаю, является ли это ошибкой или просто моей локальной проблемой, все еще есть некоторые проблемы с использованием индикаторов выполнения tqdm с progress_apply в Jupyter.

Первая попытка:

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 и панель отображения без пустой панели инициализации?:)

PS Документация ( 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!")

3 ответа

Решение

Ответ от разработчика tqdm:

Поддержка ноутбуков все еще находится на поздней стадии бета-тестирования. API может немного измениться, когда мы выпустим tqdm v5, но сейчас вам, вероятно, нужно

from tqdm._tqdm_notebook import tqdm_notebook

tqdm_notebook.pandas(...

Теперь вы можете просто сделать:

from tqdm.notebook import tqdm
tqdm.pandas()

df.progress_apply(...)

Моя версия tqdm - 4.39.0

Это то, что я запускаю в своих ноутбуках 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('*',''))

Предполагая, что вы задаетесь вопросом о том, как использовать строку состояния, вместо аскетов строки состояния на Jupyter NoteBook, ваш код должен быть

tqdm.pandas(desc="Example Desc")
keywords_df['keyword'] = keywords_df['keywird'].progress_apply(lambda x: x.replace('*',''))
Другие вопросы по тегам