#python #pandas #csv #concat #modin
#python #pandas #csv #конкат #модификация
Вопрос:
когда я использую pandas, код работает идеально (но очень медленно), а при использовании modin и concat dataframe выдает ошибку
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
Комментарии:
1. Это выглядит как несоответствие между библиотеками для Python 2 и 3
2. Я понятия не имею, как эта кодовая база отображается для Python 3.7, но, похоже, она предназначена для Python 2
Ответ №1:
Это поведение, которое непреднамеренно еще не поддерживается в Modin (версия 0.4), основанное на предположении, что параметры keys
and objs
подписываются.
Последняя строка в вашем коде может быть изменена в качестве обходного пути, пока она не будет исправлена в Modin:
data = pd.concat(list(datos.values()), keys=list(datos.keys()) , sort='True')
Я создал проблему в репозитории Modin, чтобы отследить проблему: https://github.com/modin-project/modin/issues/557