AttributeError:函數的對象沒有屬性

使用受保護的關鍵字從DataFrame API列名的結果在一個函數對象沒有屬性的錯誤消息。

寫的noopur.nigam

去年發表在:2022年5月19日

問題

你選擇從DataFrame列,你得到一個錯誤消息。

錯誤:AttributeError:“函數”對象沒有屬性“_get_object_id”工作

導致

DataFrame API包含少量的保護關鍵字。

如果一列DataFrame使用受保護的關鍵字作為列名稱,你將得到一個錯誤消息。

例如,總結是一個受保護的關鍵字。如果使用彙總列名稱,您將看到錯誤消息。

這個示例代碼使用總結作為一個列名和運行時生成錯誤消息。

% python df =火花。createDataFrame ([1, 2],“int”) .toDF (" id ") df.show pyspark.sql ()。類型進口StructType、StructField StringType, IntegerType df1 =火花。createDataFrame([(10),(11),(13日)],StructType ([StructField(“摘要”,IntegerType(),真的))))df1.show () ResultDf = df1。加入(df df1。總結= = df。id、“內在”).select (df.id df1.summary) ResultDf.show ()

解決方案

不應該使用DataFrame API保護關鍵字列名。

如果你必須使用保護的關鍵字,您應該使用支架基礎從DataFrame列訪問在選擇列。不要使用點符號在選擇列使用受保護的關鍵字。

python ResultDf = df1 %。(“摘要”)加入(df df1 df = =。id、“內在”).select (df.id df1(“摘要”))