当我尝试连接两个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 ,但我卡住了。你有什么建议吗?
1条答案
按热度按时间2admgd591#
出现此错误是因为您尝试使用Pandas API for pyspark连接两个pandas DataFrame。
不要使用 toPandas() 方法将pyspark Dataframe 转换为pandas Dataframe ,请尝试以下操作:
有关此方法的更多文档。
https://spark.apache.org/docs/3.2.0/api/python/reference/api/pyspark.sql.DataFrame.to_pandas_on_spark.html