尝试连接两个 Dataframe 时出现Pyspark pandas TypeError

jyztefdp  于 2022-12-03  发布在  Spark
关注(0)|答案(1)|浏览(196)

当我尝试连接两个panda Dataframe 时,出现以下错误:

TypeError: cannot concatenate object of type 'list; only ps.Series and ps.DataFrame are valid

一开始我以为它是因为一个 Dataframe 在某个列上包含列表而出现的。所以我试图连接两个 Dataframe ,这两个 Dataframe 在它们的列上不包含列表。但是我得到了同样的错误。我打印了 Dataframe 的类型以确保。它们都是pandas.core.frame.DataFrame。为什么我得到了这个错误,即使它们不是列表?

import pyspark.pandas as ps
split_col = split_col.toPandas()
split_col2 = split_col2.toPandas()
dfNew = ps.concat([split_col,split_col2],axis=1,ignore_index=True)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/tmp/ipykernel_1455538/463168233.py in <module>
      2 split_col = split_col.toPandas()
      3 split_col2 = split_col2.toPandas()
----> 4 dfNew = ps.concat([split_col,split_col2],axis=1,ignore_index=True)

/home/anaconda3/envs/virtenv/lib/python3.10/site-packages/pyspark/pandas/namespace.py in concat(objs, axis, join, ignore_index, sort)
   2464     for obj in objs:
   2465         if not isinstance(obj, (Series, DataFrame)):
-> 2466             raise TypeError(
   2467                 "cannot concatenate object of type "
   2468                 "'{name}"

TypeError: cannot concatenate object of type 'list; only ps.Series and ps.DataFrame are valid

type(split_col)
pandas.core.frame.DataFrame
type(split_col2)
pandas.core.frame.DataFrame

我想连接两个 Dataframe ,但我卡住了。你有什么建议吗?

2admgd59

2admgd591#

出现此错误是因为您尝试使用Pandas API for pyspark连接两个pandas DataFrame。
不要使用 toPandas() 方法将pyspark Dataframe 转换为pandas Dataframe ,请尝试以下操作:

split_col = split_col.to_pandas_on_spark()
split_col2 = split_col2.to_pandas_on_spark()

有关此方法的更多文档。
https://spark.apache.org/docs/3.2.0/api/python/reference/api/pyspark.sql.DataFrame.to_pandas_on_spark.html

相关问题