有人知道如何在Databricks中显示pandas数据框吗?

问题描述 投票:0回答:4

以前我有一个 pandas 数据框,我可以使用它在 Databricks 中显示为表格:

df.display()

Pandas 已更新至 v2.0.0。今天,当我运行 df.display() 时,我收到以下错误:

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

有人知道我该如何解决这个问题吗?

我尝试运行 df.display (不带括号),它给出了输出,但我正在寻找表格形式的输出。

python pandas apache-spark pyspark databricks
4个回答
2
投票

作为解决方法,降级到 pandas v1.5

%pip install --upgrade pandas==1.5

到目前为止提供的答案在 2023 年 4 月 3 日之前有效。

截至 4 月 4 日,使用 pandas 2.0.0,您无法使用以下命令将 Pandas DataFrame 转换为 Spark DataFrame:

spark.createDataFrame(df)

使用上面的命令会导致问题中提到的错误:

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

iteritems
功能似乎在pandas 2.0.0中被删除了。来自 pandas 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。


1
投票

您只需要使用

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()


0
投票

我相信你需要将 pandas 数据框转换为 Spark

df.createDataFrame(dataframe_pandas)  
df.display()

0
投票

只需使用以下几行:

    pd.DataFrame.iteritems = pd.DataFrame.items
    df=spark.createDataFrame(df)
    display(df)

新版本的 pandas 不支持“iteritems”。因此,这是针对 pandas 引起的任何 AttributeError 的最简单修复

© www.soinside.com 2019 - 2024. All rights reserved.