【发布时间】:2019-02-12 00:36:27
【问题描述】:
来自https://pypi.org/project/tqdm/:
import pandas as pd
import numpy as np
from tqdm import tqdm
df = pd.DataFrame(np.random.randint(0, 100, (100000, 6)))
tqdm.pandas(desc="my bar!")p`
df.progress_apply(lambda x: x**2)
我获取了这段代码并对其进行了编辑,以便从 load_excel 创建一个 DataFrame,而不是使用随机数:
import pandas as pd
from tqdm import tqdm
import numpy as np
filename="huge_file.xlsx"
df = pd.DataFrame(pd.read_excel(filename))
tqdm.pandas()
df.progress_apply(lambda x: x**2)
这给了我一个错误,所以我将 df.progress_apply 更改为:
df.progress_apply(lambda x: x)
这是最终代码:
import pandas as pd
from tqdm import tqdm
import numpy as np
filename="huge_file.xlsx"
df = pd.DataFrame(pd.read_excel(filename))
tqdm.pandas()
df.progress_apply(lambda x: x)
这会产生一个进度条,但它实际上并没有显示任何进度,而是加载进度条,当操作完成时它会跳到 100%,从而达到目的。
我的问题是:如何使这个进度条工作?
progress_apply 内部的函数实际上是做什么的?
有更好的方法吗?也许是 tqdm 的替代品?
非常感谢任何帮助。
【问题讨论】:
-
tqdm 正在跟踪遍历一个可迭代对象所花费的时间。要拥有状态栏,您需要了解 pandas 的支持如何将文件加载到数据框中并编写自己的代码来执行此操作(如果可能)。如果加载时间是问题,为什么不粗略估计几行长度
-
纺车就够了吗?