[英]How to apply function to each row of specified column of PySpark DataFrame
我有一個PySpark DataFrame由三列組成,其結構如下。
In[1]: df.take(1)
Out[1]:
[Row(angle_est=-0.006815859163590619, rwsep_est=0.00019571401752467945, cost_est=34.33651951754235)]
我想要做的是檢索第一列( angle_est
)的每個值,並將其作為參數xMisallignment
傳遞給定義的函數,以設置類對象的特定屬性。 定義的功能是:
def setMisAllignment(self, xMisallignment):
if np.abs(xMisallignment) > 0.8:
warnings.warn('You might set misallignment angle too large.')
self.MisAllignment = xMisallignment
我試圖選擇第一列並將其轉換為rdd,並將上述函數應用於map()函數,但似乎它不起作用, MisAllignment
無論如何都沒有改變。
df.select(df.angle_est).rdd.map(lambda row: model0.setMisAllignment(row))
In[2]: model0.MisAllignment
Out[2]: 0.00111511718224
有人有想法幫助我讓這個功能起作用嗎? 提前致謝!
您可以將您的函數注冊為spark UDF類似於以下內容:
spark.udf.register("misallign", setMisAllignment)
您可以在此測試套件中獲得許多創建和注冊UDF的示例: https : //github.com/apache/spark/blob/master/sql/core/src/test/java/test/org/apache/spark/sql /JavaUDFSuite.java
希望它能回答你的問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.