栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

pandas DataFrame parallel

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pandas DataFrame parallel

pandas Dataframe parallel_apply 处理数据时EOFError: Ran out of input
      • 问题
      • 总结

问题
  File "/usr/local/lib/python3.8/site-packages/pandarallel/core.py", line 324, in closure
    return wrapped_reduce_function(
  File "/usr/local/lib/python3.8/site-packages/pandarallel/core.py", line 199, in closure
    return reduce_function(dfs, extra)
  File "/usr/local/lib/python3.8/site-packages/pandarallel/data_types/dataframe.py", line 45, in reduce
    return pd.concat(datas, copy=False)
  File "/usr/local/lib/python3.8/site-packages/pandas/util/_decorators.py", line 311, in wrapper
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/pandas/core/reshape/concat.py", line 347, in concat
    op = _Concatenator(
  File "/usr/local/lib/python3.8/site-packages/pandas/core/reshape/concat.py", line 401, in __init__
    objs = list(objs)
  File "/usr/local/lib/python3.8/site-packages/pandarallel/core.py", line 195, in 
    get_dataframe_and_delete_file(output_file_path)
  File "/usr/local/lib/python3.8/site-packages/pandarallel/core.py", line 189, in get_dataframe_and_delete_file
    data = pickle.load(file_descriptor)
EOFError: Ran out of input

有点摸不着头脑,是 pandarallel 报错。网上查询资料,各种文件操作相关的解决方案,从报错信息上看,最后是文件相关的。但是错误产生的起始位置是 dataframe 的一连串处理,使用了 pandarallel 库来并行计算。最后出错的地方是 pandarallel/core.py 猜测是不是使用 pandarallel 库的问题,于是将 parallel_apply 替换为 apply 运行程序,出现另外一个错误

KeyError:xxxxxxxxxxxxxx # 具体错误信息没记录下来

明显这个是业务逻辑处理上的问题,联想到上面的错误是不是也是这个问题,修复后 apply 验证没问题,将 apply 替换为 parallel_apply 再次运行发现 EOFError 问题解决了。

总结

对于业务开发人员来说,parallel_apply 的错误信息不够明了,apply 友好很多。从 parallel_apply 给出的错误信息猜测 dataframe 数据和文件有关,pandarallel 从文件加载数据。

PS:个人认为 pandarallel 不是特别好用,有更好的请留言告知,拜谢。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/987208.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号