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

jon*_*boy 1 python pandas progress-bar

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

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)))
Run Code Online (Sandbox Code Playgroud)

ValueError:DataFrame的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。

小智 8

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)
Run Code Online (Sandbox Code Playgroud)

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

pip uninstall tqdm
pip install tqdm=='4.33.0'
Run Code Online (Sandbox Code Playgroud)