我正在尝试比较两个 pandas 数据帧,但出现错误,因为“DataFrame”对象没有属性“withColumn”。可能是什么问题?
import pandas as pd
import pyspark.sql.functions as F
pd_df=pd.DataFrame(df.dtypes,columns=['column','data_type'])
pd_df1=pd.DataFrame(df1.dtypes,columns=['column','data_type'])
pd.merge(pd_df,pd_df1, on='column', how='outer'
).withColumn(
"result",
F.when(F.col("data_type_x") == 'NaN','new attribute'.otherwise('old attribute')))
.select(
"column",
"data_type_x",
"data_type_y",
"result"
)
Run Code Online (Sandbox Code Playgroud)
df 和 df1 是一些数据框
小智 0
因为您将它们设置为 Pandas DataFrame,而不是 Spark DataFrame。对于与 Pandas DataFrames 的连接,您需要使用
DataFrame_output = DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)
Run Code Online (Sandbox Code Playgroud)
运行它来了解它是什么 DataFrame。
type(df)
Run Code Online (Sandbox Code Playgroud)
要使用withColumn,您需要 Spark DataFrames。如果您想转换 DataFrame,请使用以下命令:
import pyspark
from pyspark.sql import SparkSession
import pandas as pd
spark = SparkSession.builder.appName('pandasToSparkDF').getOrCreate()
df = spark.createDataFrame(pd_df1)
Run Code Online (Sandbox Code Playgroud)