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

标签 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)))

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'

关于python - 在不可迭代函数上执行进度条 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58617945/

相关文章:

Javascript |网页 |饼图状态

c++ - Boost::Asio 在使用异步操作时传输字节

python - 覆盖(扩展)默认类?

python - 在 Python 中打印图形(顶点、边)

android - 如何在将多个图像文件发送到电子邮件时显示进度条

python - 根据前一行的值从数据框中删除行

python - Pandas 数据框根据嵌套 if 条件设置列值

python - Python uuid.uuid4 是否足够强大以用于密码重置链接?

python - 使用 python 请求解析 HTML

python-3.x - 无法在 AWS Lambda 中导入 Pandas