apply lambda:根据b的多个关键字删除A对应的字符



如何根据一列的值删除另一列中对应的字符?

import pandas as pd
df = pd.DataFrame([['ABCD','B'],['ABFJS','A,J'],['DGQEX','']],
index = [1,2,3],columns=['A','B'])

示例:我想删除"ABCD"在第一行根据"B"并保持"acd"。同样,我想删除"one_answers";J"在"ABFJS"的第二行按照"A,J"one_answers"BFS"保留。第三行不变。我该怎么做呢?我已经试过了,但它不工作

df.apply(    lambda x: [   x["A"].replace(i, "")  for i in str(x["B"]).split(",") ], axis=1)

第二行返回的是[BFJS, ABFS]而不是[BFS]

您可以像这样使用regex're.sub()函数:

df.apply(lambda x: re.sub("|".join(x['B'].split(',')), "", x["A"]), axis=1)

打印:

1      ACD
2      BFS
3    DGQEX

最新更新