首页 > 解决方案 > 是否有显示进度条的progress_transform,如progress_apply?

问题描述

我正在尝试使用 df["series"].transform 而不是 df["series"].apply。对于 .apply 我们在启动后有 .progress_apply

from tqdm import tqdm
tqdm.pandas
df["series"].progress_apply(function)

但是,我找不到 .progress_transform 的版本。我知道我们可以使用其他 tqdm 方法,例如循环它,但我只想知道我们是否有 .progress_transform?谢谢你

标签: pythonpandastqdm

解决方案


也许我们可以查看实际的源代码并将更改应用于转换?

import pandas as pd
import numpy as np
from tqdm.auto import tqdm

def tqdm_pandas(t):
    from pandas.core.frame import DataFrame
    def inner(df, func, *args, **kwargs):
        t.total = groups.size // len(groups)
        def wrapper(*args, **kwargs):
            t.update(1)
            return func(*args, **kwargs)
        result = df.transform(wrapper, *args, **kwargs)
        t.close()
        return result
    DataFrame.progress_transform = inner
    
    
df = pd.DataFrame(np.random.randint(0, 100, (100000, 6)))

# Register `pandas.progress_apply` and `pandas.Series.map_apply` with `tqdm`
# (can use `tqdm.gui.tqdm`, `tqdm.notebook.tqdm`, optional kwargs, etc.)
tqdm.pandas(desc="my bar!")


df.groupby(0)[5].progress_transform(sum)

推荐阅读