取消
顯示的結果
而不是尋找
你的意思是:

將數組作為參數傳遞給PandasUDF

KNP
新的因素

嗨,團隊,

我的python dataframe如下。

圖像原始數據是相當長的係列大約5000的數字。我的要求是經過RawData列中的每一行並計算2個指標。我已經創建了一個函數在Python中,效果絕對好。

Python函數

def calculate_metrics (value_dict):

df = value_dict.copy ()

df [' Metric1 '] = pd.Series (dtype =“浮動”)

df [' Metric2 '] = pd.Series (dtype =“浮動”)

指數,行value_dict.iterrows ():

df。loc (df (“Id”) = =行(“Id”), ' Metric1 '] = Function1(行[' RawData '])

df。loc (df (“Id”) = =行(“Id”), ' Metric2 '] = Function2(行[' RawData '])

返回df

我通過一個數據幀value_dict與“標識符和RawData”兩列。

我叫如下

value_dict [' RawData '] = value_dict [' RawData ']。應用(λx: np.array (x))

df_Fullagg = calculate_metrics (value_dict)

這個計算所有我需要的指標dataframe並返回。

這裏的羊皮紙書卷的數據是相當高的。我想用火花azure的突觸框架在這裏工作。我怎麼能使用pandas_Udf寫相同的功能。

我在找一些這樣的實現。

@pandas_udf (int, PandasUDFType.SCALAR)

def calculate_metrics (value_dict):

df = value_dict.copy ()

df [' Metric1 '] = pd.Series (dtype =“浮動”)

df [' Metric2 '] = pd.Series (dtype =“浮動”)

指數,行value_dict.iterrows ():

df。loc (df (“Id”) = =行(“Id”), ' Metric1 '] = Function1(行[' RawData '])

df。loc (df (“Id”) = =行(“Id”), ' Metric2 '] = Function2(行[' RawData '])

返回df

任何幫助將非常感激。

2回答2

artsheiko
重視貢獻二世
重視貢獻二世

你好,看來你不需要一個熊貓udf。試試以下:

進口numpy pyspark.sql np。從pyspark進口FloatType類型。sql導入函數f數據=[{“標識符”:123年,“RawData”:“1、2、4、2、34歲,6,7,8”},{“標識符”:456年,“RawData”:“4、5、7、8、9、3、4、7、8”}] df = spark.createDataFrame series_mean = f(數據)。udf(λx:浮動(np.mean (x)), FloatType()) #取代Metric1邏輯series_max = f。udf(λx:浮動(np.max (x)), FloatType()) #取代Metric2邏輯df = (df .withColumn (“series_int f.split (f.col (RawData) ', ') .cast(數組< int >)) .withColumn(“的意思是”,series_mean (“series_int”)) .withColumn (“max”, series_max (“series_int”)))顯示(df)

Vidula
尊敬的貢獻者

你好@Kausthub NP

希望一切都好!隻是想檢查如果你能解決你的問題,你會很高興分享解決方案或答案標記為最佳?其他的請讓我們知道如果你需要更多的幫助。

我們很想聽到你的聲音。

謝謝!

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map