Раньше у меня был фрейм данных pandas, который я мог отображать в виде таблицы в Databricks, используя:
df.display()
Панды были обновлены до версии 2.0.0. сегодня, и теперь я получаю следующую ошибку при запуске df.display():
AttributeError: 'DataFrame' object has no attribute 'iteritems'
Кто-нибудь знает, как я могу это решить?
Я попытался запустить df.display (без скобок), и он дает вывод, но я ищу вывод в табличной форме.
display(df)
работает?
Нет, ни одна из этих техник не работает. Похоже, что новое обновление Pandas все испортило.
Я считаю, что вам нужно преобразовать фрейм данных pandas в искру
df.createDataFrame(dataframe_pandas)
df.display()
Вам просто нужно использовать функцию display
, передающую Pandas DataFrame в качестве аргумента, а не пытаться вызывать ее как член класса Pandas DataFrame.
display(pdf)
Или вы можете просто указать имя переменной с объектом Pandas DataFrame — тогда оно будет напечатано с использованием встроенного представления Panda.
import pyspark.sql.functions as F
pdf = spark.range(10).withColumn("rnd", F.rand()).toPandas()
В качестве обходного пути перейдите на pandas v1.5.
%pip install --upgrade pandas==1.5
По состоянию на 4 апреля с пандами 2.0.0 вы не можете преобразовать фрейм данных Pandas в фрейм данных Spark с помощью команды:
spark.createDataFrame(df)
Использование приведенной выше команды приводит к ошибке, упомянутой в вопросе:
AttributeError: 'DataFrame' object has no attribute 'iteritems'
Функция iteritems
, кажется, была удалена в pandas 2.0.0. Из журнала изменений панд 2.0.0:
Removed deprecated Series.iteritems(), DataFrame.iteritems(), use obj.items instead
В то время как код, написанный в spark для преобразования кадра данных pandas в фрейм данных spark, по-прежнему использует iteritems
/databricks/spark/python/pyspark/sql/pandas/conversion.py in createDataFrame(self, data, schema, samplingRatio, verifySchema)
308 warnings.warn(msg)
309 raise
--> 310 data = self._convert_from_pandas(data, schema, timezone)
311 return self._create_dataframe(data, schema, samplingRatio, verifySchema)
312
/databricks/spark/python/pyspark/sql/pandas/conversion.py in _convert_from_pandas(self, pdf, schema, timezone)
340 pdf[field.name] = s
341 else:
--> 342 for column, series in pdf.iteritems():
343 s = _check_series_convert_timestamps_tz_local(series, timezone)
344 if s is not series:
Похоже, нам придется дождаться исправления для использования Pandas 2.0.0.
Была именно эта проблема. Пришлось понизить, чтобы заставить его работать. Не уверен, когда они собираются выпустить исправление.
Фрейм данных Pandas, вы уверены? Мне кажется, что
df.display()
- это метод фрейма данных Spark? Если вы сделаете это на фрейме данных Pandas, он подниметсяAttributeError: 'DataFrame' object has no attribute 'display'