如何根据条件用 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|
+----+------+
我的数据框列出了一些我感兴趣的名称,可能会进行一些更改,我想要的是如果选项为空则保留原始名称,如果显示删除则删除名称,如果有内容则替换名称。
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|
+----+------+