Кто-нибудь знает, как отобразить фрейм данных pandas в Databricks?

Раньше у меня был фрейм данных pandas, который я мог отображать в виде таблицы в Databricks, используя:

df.display()

Панды были обновлены до версии 2.0.0. сегодня, и теперь я получаю следующую ошибку при запуске df.display():

AttributeError: 'DataFrame' object has no attribute 'iteritems'

Кто-нибудь знает, как я могу это решить?

Я попытался запустить df.display (без скобок), и он дает вывод, но я ищу вывод в табличной форме.

Фрейм данных Pandas, вы уверены? Мне кажется, что df.display() - это метод фрейма данных Spark? Если вы сделаете это на фрейме данных Pandas, он поднимется AttributeError: 'DataFrame' object has no attribute 'display'

Corralien 03.04.2023 20:39

display(df) работает?

Derek O 03.04.2023 20:42

Нет, ни одна из этих техник не работает. Похоже, что новое обновление Pandas все испортило.

ibarbo 04.04.2023 17:25
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
3
945
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Я считаю, что вам нужно преобразовать фрейм данных 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

The answers provided till now used to work prior to 3rd April 2023.

По состоянию на 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.

Была именно эта проблема. Пришлось понизить, чтобы заставить его работать. Не уверен, когда они собираются выпустить исправление.

ibarbo 04.04.2023 17:24

Другие вопросы по теме