我正在嘗試預處理 Spark 資料框中的列,該列包含例如 int 值[41,43,45,59,72]。例如,我正在嘗試處理該資料以通過 5 個步驟獲得下一個值41->40, 43->45, 45->45, 59->60 ....
如何在 PySpark 資料幀中以最佳方式執行此操作?
uj5u.com熱心網友回復:
F.round(F.col('c1') / 5) * 5
from pyspark.sql import functions as F
df = spark.createDataFrame([(41,), (43,), (45,), (59,), (72,)], ['c1'])
df = df.withColumn('c2', (F.round(F.col('c1') / 5) * 5).cast('int'))
df.show()
# --- ---
# | c1| c2|
# --- ---
# | 41| 40|
# | 43| 45|
# | 45| 45|
# | 59| 60|
# | 72| 70|
# --- ---
要覆寫,而不是新名稱,請使用現有的列名稱:
from pyspark.sql import functions as F
df = spark.createDataFrame([(41,), (43,), (45,), (59,), (72,)], ['c1'])
df = df.withColumn('c1', (F.round(F.col('c1') / 5) * 5).cast('int'))
df.show()
# ---
# | c1|
# ---
# | 40|
# | 45|
# | 45|
# | 60|
# | 70|
# ---
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/496088.html
