【发布时间】:2021-02-22 07:00:44
【问题描述】:
我有一个 pyspark 数据框
| ID|colA|colB |colC|
+---+----+-----+----+
|ID1| 3|5.85 | LB|
|ID2| 4|12.67| RF|
|ID3| 2|20.78| LCM|
|ID4| 1| 2 | LWB|
|ID5| 6| 3 | LF|
|ID6| 7| 4 | LM|
|ID7| 8| 5 | RS|
+---+----+----+----+
我的目标是将 ColC 中的值替换为 LB、LWB、LF 的值,如下所示。
x = [LB,LWB,LF]
y = [RF,LCM]
z = [LM,RS]
目前我可以通过手动替换每个值来实现这一点,如下面的代码:
# Replacing the values LB,LWF,LF with x
df_new = df.withColumn('ColC',f.when((f.col('ColC') == 'LB')|(f.col('ColC') == 'LWB')|(f.col('ColC') == 'LF'),'x').otherwise(df.ColC))
我的问题是,我们如何通过使用 pyspark 一次动态地遍历列表 (x,y,z) 来替换列的值(在我的示例中为 ColC)?涉及的时间复杂度是多少?另外,如何将 ColB 中的十进制值截断到小数点后 1 位?
【问题讨论】:
标签: dataframe apache-spark pyspark apache-spark-sql