- 问题
- 总结
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 不是特别好用,有更好的请留言告知,拜谢。



