我的代码在 pandas 中运行正常,但在 modin 中没有
Posted
技术标签:
【中文标题】我的代码在 pandas 中运行正常,但在 modin 中没有【英文标题】:My code is running properly in pandas, but not in modin 【发布时间】:2019-09-05 20:31:12 【问题描述】:当我使用 pandas 时,代码运行良好(但速度很慢), 当使用 modin 和 concat 数据框时,会显示一个错误
contador = 0
df = pd.DataFrame()
data = pd.DataFrame()
for file in range(len(files)):
usefile = files[file]
print("Valor Numero :" + str(contador) + " de un total de " + str((len(files))) + " archivos")
print("Existe " + str(usefile) + " añadiendolo al DataFrame" )
contador = contador +1
ruta = mainpath + "/" + str(usefile)
df = pd.read_csv(ruta)
datos[usefile] = df
data = pd.concat(datos.values(), keys=datos.keys() , sort='True')
我希望输出一个数据帧,其中所有文件都从 dict 连接,但是可以接收(在 pandas 中,一切正常):
<ipython-input-4-e5a361476e76> in <module>
12 df = pd.read_csv(ruta)
13 datos[usefile] = df
---> 14 data = pd.concat(datos.values(), keys=datos.keys() , sort='True')
15
~/anaconda3/lib/python3.7/site-packages/modin/pandas/concat.py in concat(objs, axis, join, join_axes, ignore_index, keys, levels, names, verify_integrity, sort, copy)
98 new_idx_labels =
99 keys[i]: objs[i].index if axis == 0 else objs[i].columns
--> 100 for i in range(len(objs))
101
102 print(new_idx_labels)
~/anaconda3/lib/python3.7/site-packages/modin/pandas/concat.py in <dictcomp>(.0)
98 new_idx_labels =
99 keys[i]: objs[i].index if axis == 0 else objs[i].columns
--> 100 for i in range(len(objs))
101
102 print(new_idx_labels)
TypeError: 'dict_keys' object is not subscriptable
【问题讨论】:
这看起来像是 Python 2 和 3 的库之间的不匹配 我不知道这个代码库在 Python 3.7 中是如何出现的,但它似乎适用于 Python 2 【参考方案1】:基于 keys
和 objs
参数是可下标的假设,Modin(0.4 版)无意中不支持这种行为。
您的代码中的最后一行可以作为一种解决方法进行更改,直到它在 Modin 中得到修复:
data = pd.concat(list(datos.values()), keys=list(datos.keys()) , sort='True')
我在 Modin 存储库上创建了一个问题来跟踪问题:https://github.com/modin-project/modin/issues/557
【讨论】:
以上是关于我的代码在 pandas 中运行正常,但在 modin 中没有的主要内容,如果未能解决你的问题,请参考以下文章
批处理文件在我的桌面上运行正常,但在虚拟桌面上运行不正常为什么?
javascript代码在chrome移动浏览器中不起作用,但在桌面上它工作正常
socket io连接在localhost中正常工作,但在heroku服务器上部署时却没有