“DataFrame”对象没有属性“withColumn”

jak*_*krm 7 python pyspark

我正在尝试比较两个 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)