在循环时调用 tqdm 显示进度已经是一个常规操作,常见的方式是
for ii in tqdm(...):
...
while 循环的情况类似,
while icnt in tqdm(range(n)):
...
icnt += 1
这里记录没有显式循环时,在 groupby 中的用法:
import pandas as pd
import numpy as np
from tqdm import tqdm
df = pd.DataFrame(np.random.randint(0, 100, (100000, 6)))
# 用 tqdm注册 pandas.progress_apply 和 pandas.Series.map_apply 两个函数,下边的 'my bar1' 可以换成其他说明文字。
tqdm.pandas(desc="my bar!")
# 接下来可以用 progress_apply 代替原本的 dataframe.apply,用 progress_map 代替原本的 dataframe.map
df2 = df.iloc[:, 0].progress_apply(lambda x: x**2)
my bar!: 100%|██████████| 100000/100000 [00:00<00:00, 596835.61it/s]
或者在 groupby 中使用自定义函数:
def calc_x(x):
return x ** 2
df2 = df.groupby(1).progress_apply(calc_x)
my bar!: 100%|██████████| 100/100 [00:00<00:00, 374.56it/s]