#python #pandas #pyspark #user-defined-functions
#питон #панды #пайспарк #определяемые пользователем функции
Вопрос:
Я использую pandasUDF для применения стандартных библиотек ML python к фрейму данных pyspark. После определения схемы и составления прогнозов я получаю pyspark DF в качестве выходных данных. Теперь я хочу кое-что сделать с этим фреймом данных прогнозов, например, я пытаюсь суммировать все значения в столбце «weekly_forecast_1». Когда я применяю .collect() или .Методы toPandas(), я получаю следующую ошибку в .fit()
IndexError: too many indices for array:array is 0-dimensional, but 1 were indexed
Я получаю вышеуказанную ошибку всякий раз, когда пытаюсь применить .collect() или .Методы toPandas() для всего фрейма данных или для некоторых его столбцов. Я попытался сделать копию DF и применить методы, но это приводит к той же ошибке.
PS ошибка одинакова для разных библиотек ML (например, statsmodels.Экспоненциальное сглаживание, fbprophet, sklearn RandomForestRegressor и т. Д.)
Комментарии:
1. Добро пожаловать в StackOverflow. Чтобы улучшить ваш вопрос, пожалуйста, добавьте (возможно, упрощенный) фрагмент кода, чтобы мы могли видеть, что вы делаете. В противном случае вам трудно чем-либо помочь.
Ответ №1:
Ошибка
IndexError: too many indices for array:array is 0-dimensional, but 1 were indexed
означает, что вы пытаетесь проиндексировать массив со слишком большим количеством индексов для его размеров. Здесь кажется, что ваш массив является 0-мерным (что означает, что он скалярный), и вы пытаетесь его проиндексировать.
Поскольку ошибка одинакова для нескольких разных библиотек, я думаю, что ваша проблема связана с UDF, и я бы предположил, что она не возвращает то, что вы ожидаете. Вероятно, он возвращает только скаляр внутри DF вместо обычной матрицы.