首页 > 解决方案 > 如何使用条件将 A 列中的值替换为 B 列

问题描述

我的数据框列出了一些我感兴趣的名称,并且可能会进行一些更改,如果选项为空,我想要的是保留原始名称,如果它说删除则删除名称,如果有的话则替换名称。

姓名 选项
一个
删除
C
D DDDD
删除
F 法郎

我想要的最终数据框是在更大的数据框和其他信息中更改名称。可能看起来像这样

姓名 信息1 信息2
一个 xxxx 某事
一个 xxxx 某事
C X 布拉拉
DDDD xx 啦啦啦
DDDD xx
DDDD xx 啦啦啦
法郎 xxx 啊啊啊

标签: pythonpandasreplace

解决方案


您可以使用 case 条件根据选项值进行替换。

val df = Seq(("A", ""), ("B", "delete"), ("C", ""), ("D", "DDDD"), ("E", "delete"), ("F", "FF")).toDF("name", "option")
df.createOrReplaceTempView("temp")

val query = """
select case when option = 'delete' then ''
            when option == '' then name
            else option
       end as name,
       option
from temp
"""
spark.sql(query).show()


+----+------+
|name|option|
+----+------+
|   A|      |
|    |delete|
|   C|      |
|DDDD|  DDDD|
|    |delete|
|  FF|    FF|
+----+------+

推荐阅读