Python Pandas/tqdm 显示提取进度

标签 python pandas tqdm

我有一个巨大的 pandas 系列,包含 10.07 亿行字符串。我对其运行正则表达式提取(因此该任务与行顺序无关,可以并行运行),这需要几个小时,如下所示

df["big_string_column"].str.extract(r"Name: (.*), Value: (.*)") 

df["big_string_column"].str.extractall(r"Name: (.*), Value: (.*)")

这将返回一个带有 2 个捕获组和列的新 DataFrame。

有没有办法使用 tqdm 或其他东西来显示这方面的进展? :)

是否可以将其重构为 dataframe.progress_apply ,它保留正则表达式中的捕获组,而不会造成重大性能影响(因为 pd.Series.str.extract 优化了正则表达式),或者是否有完全不同的方法?

最佳答案

我不知道 .str.extract 返回任何进度报告功能。将其更改为 .apply 以使用 .progress_apply 可能会带来不良的性能损失。

它既不漂亮,也不是一行行,但如果正在完成的工作是与行无关的(没有分组),您总是可以将 df 分成 block ,独立地完成工作 block ,并在最后将它们合并在一起。然后,您可以使用 tqdm 按 block 跟踪进度。

类似这样的事情:

# 1000 sections as an example, may need to adapt to your problem
chunks = np.array_split(df, 1000)

processed = []
for chunk in tqdm(chunks):
    processed.append(chunk.str.extract(r"Name: (.*), Value: (.*)"))

out = pd.concat(processed)

关于Python Pandas/tqdm 显示提取进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52538308/

相关文章:

具有用于数据库访问的 API 的 Python 应用程序

python - Pyramid 装饰器链接

python - 如何向 tqdm pandas 添加描述?

python - 使用 Pandas 标记分组数据集中的最后一组行

python - 在 Python 中解码一列 Base64 字符串

python - 具有多个 tqdm 进度条的多处理

python - tqdm 显示生成器的进度我知道的长度

python - 如何显示我的 Jupyter 笔记本的版本并在 Jupyter 笔记本中运行单元格?我收到错误 : bad interpreter

python - 在 Python 中使用字符串提取数据框中的最后一个数字

python - 在 Pandas 中设置联盟