以前我有一个 pandas 数据框,我可以使用它在 Databricks 中显示为表格:
df.display()
Pandas 已更新至 v2.0.0。今天,当我运行 df.display() 时,我收到以下错误:
AttributeError: 'DataFrame' object has no attribute 'iteritems'
有人知道我该如何解决这个问题吗?
我尝试运行 df.display (不带括号),它给出了输出,但我正在寻找表格形式的输出。
作为解决方法,降级到 pandas v1.5
%pip install --upgrade pandas==1.5
截至 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。
我相信你需要将 pandas 数据框转换为 Spark
df.createDataFrame(dataframe_pandas)
df.display()
只需使用以下几行:
pd.DataFrame.iteritems = pd.DataFrame.items
df=spark.createDataFrame(df)
display(df)
新版本的 pandas 不支持“iteritems”。因此,这是针对 pandas 引起的任何 AttributeError 的最简单修复