如何根据一列的值删除另一列中对应的字符?
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