Python ';数据帧';对象没有属性';带列';

Python ';数据帧';对象没有属性';带列';,python,pyspark,Python,Pyspark,我试图比较两个数据帧,但我得到一个错误,因为“数据帧”对象没有“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,p

我试图比较两个数据帧,但我得到一个错误,因为“数据帧”对象没有“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"
    )

df和df1是一些数据帧,因为您将它们设置为熊猫数据帧,而不是火花数据帧。对于与数据帧的联接,您可能希望使用

DataFrame_output = DataFrame.join(other, on=None, how='left', lsuffix='', rsuffix='', sort=False)
运行此命令以了解它是什么数据帧

type(df)
要对列使用
,您需要Spark数据帧。如果要转换数据帧,请使用以下命令:

import pyspark
from pyspark.sql import SparkSession
import pandas as pd

spark = SparkSession.builder.appName('pandasToSparkDF').getOrCreate()
df = spark.createDataFrame(pd_df1)

我想出来了。谢谢你的帮助

def res(df):
    if df['data_type_x'] == df['data_type_y']:
        return 'no change'
    elif pd.isnull(df['data_type_x']):
        return 'new attribute'
    elif pd.isnull(df['data_type_y']):
        return 'deleted attribute'
    elif df['data_type_x'] != df['data_type_y'] and not pd.isnull(df['data_type_x']) and not pd.isnull(df['data_type_y']):
        return 'datatype change'

pd_merge['result'] = pd_merge.apply(res, axis = 1)

谢谢你的回答。是否可以在不转换为Spark Dataframe的情况下向Pandas Dataframe添加一个新列(具有上述逻辑)?是的,我会看看这个,并且输入Dataframe已经。如果您说
write()
,则输入已丢失。