当我使用熊猫时,代码可以完美运行(但是非常慢),
当使用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连接在一起的数据帧的输出,但是y recive(在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

最佳答案

基于keysobjs参数是可下标的假设,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

关于python - 我的代码在pandas中正常运行,但在modin中未正常运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55696287/

10-09 03:04