如何根据条件用 B 列替换 A 列中的值

How to replace values in column A with column B with conditions

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

name option
A
B delete
C
D DDDD
E delete
F FF

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

name info1 info2
A xxxx sth
A xxxx sth
C x blala
DDDD xx lalalaa
DDDD xx laa
DDDD xx laaaa
FF xxx aaaa

为了获得良好的性能,首先删除不需要的行,然后根据条件设置值:

df1 = df[~df['option'].str.contains('delete')]
df1.loc[df['option'].ne('') | df['option'].notnull(), 'name'] = ''

或者:

df1['name'] = np.where(df['option'].ne('') | df['option'].notnull(), '', df1['name'])

您可以使用 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|
+----+------+