如何在DataFrame中替换值并保留原始列数据?
保留原始列同时新增替换后列的Spark解决方案
你已经找对了替换值的核心方法,只是之前误把新列名写成了原列名导致覆盖了数据对吧?其实只要换个思路——用withColumn创建全新的列,而不是修改原列,就能完美解决你的需求!
针对你的场景,我们可以分别基于col2、col3生成替换后的col4、col5,完全保留原始列的内容:
首先导入必要的Spark函数:
from pyspark.sql.functions import col, when
然后执行以下代码:
# 基于col2生成替换后的col4,保留原col2不变 updated_df = dataframe.withColumn("col4", when(col("col2") == "c", "cat").otherwise(col("col2"))) # 基于col3生成替换后的col5,保留原col3不变 updated_df = updated_df.withColumn("col5", when(col("col3") == "h", "hat").otherwise(col("col3")))
运行这段代码后,你的DataFrame就会拥有原始的col1、col2、col3,同时新增了替换后的col4和col5,完全匹配你想要的最终结构。
如果之后还有其他列需要做类似的替换,都可以复用这个逻辑:始终用withColumn创建新列,避免直接修改原列,就能确保原始数据不会被覆盖。
内容的提问来源于stack exchange,提问作者Venkat J
相关产品推荐
相关产品推荐

