Skip to main content
 首页 » 编程设计

python之在不可迭代函数上执行进度条之Python

2025年05月04日17jpfss

关于这个有几个问题,但我似乎找不到一个在不可迭代函数上执行进度条的问题。下面是一个合并两个独立数据框的函数。我希望将此功能插入一个单独的显示进度的功能中。

from multiprocessing import Pool 
import tqdm 
import pandas as pd 
import numpy as np 
 
df1 = pd.DataFrame(np.random.randint(0,100,size=(100000, 4)), columns=list('ABCD')) 
df2 = pd.DataFrame(np.random.randint(0,100,size=(100000, 4)), columns=list('AXYZ')) 
 
def merge_df(df1, df2): 
 
    df = pd.merge(left = df1, right = df2, how = 'left', 
    left_on = 'A', right_on = 'A') 
    return df 
 
if __name__ == '__main__': 
   with Pool(2) as p: 
      r = list(tqdm.tqdm(p.imap(merge_df, df1, df2))) 

ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

请您参考如下方法:

from tqdm import tqdm 
import pandas as pd 
import numpy as np 
 
df1 = pd.DataFrame(np.random.randint(0,100,size=(100000, 4)), columns=list('ABCD')) 
df2 = pd.DataFrame(np.random.randint(0,100,size=(100000, 4)), columns=list('AXYZ')) 
 
#this is how you activate the pandas features in tqdm 
tqdm.pandas() 
 
#call the progress_apply feature with a dummy lambda  
df1.merge(df2).progress_apply(lambda x: x) 

要使上述代码正常工作,您必须拥有 4.33.0 版本的 tqdm。使用以下命令卸载旧版本并安装新版本:

pip uninstall tqdm 
pip install tqdm=='4.33.0'