我有一列由數字組成的陣列,即 [0,80,160,220],并想創建一列相鄰項之間差異的陣列,即 [80,80,60]
有沒有人知道如何在 Python/PySpark 中做到這一點?我的代碼是,df=df.withcolumn('col_array_diffs', [df.col_array.getItem[i]-df.col_array.getItem[i-1] if i else None for i in range(1,F.size(df.col_array))])但我真的很掙扎于陣列型別。這會產生 AssertionError: col should be Column ...謝謝!
uj5u.com熱心網友回復:
您可以使用 UDF 來執行此操作。
import pyspark.sql.types as T
def subtract_el(x):
return [abs(i-j) for i, j in list(zip(x, x[1:]))]
df = spark.createDataFrame(pd.DataFrame([[[0,80,160,220]]]))
df.select(F.udf(subtract_el, T.ArrayType(T.IntegerType()))("0").alias("diff")).show()
結果是 :
------------
| diff|
------------
|[80, 80, 60]|
------------
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/324817.html
