使用 Python - 如果可以在 "colB" 中找到 "colA",我如何通过返回 "colA" 的值来创建新列 ("new_col")

Using Python - How can I create a new column ("new_col") by returning the value of "colA" if "colA" can be found in "colB"

我被困在一个项目上。 我正在尝试通过检查两列(A 和 B)来创建一个新的唯一列,如果 A 中的值存在于 B 中的任何位置,或者 B 的值存在于 A 中的任何位置 return 该值,否则 return一个“”。 例如,我有;

    colA colB
0    x     
1    y     
2         c
3         d
4         x
5    d     
6          

第一次比较 colA 和 colB 后,我期待这样的结果;

  colA colB new_colA
0    x             x
1    y             y
2         c         
3         d        d
4         x        x
5    d             d
6                   

这是第二次;

  colA colB new_colA new_colB
0    x             x         
1    y             y         
2         c                 c
3         d        d         
4         x        x         
5    d             d         
6                            

我不知道如何使用 python。 我尝试了 excel,其中我只是使用条件格式来突出显示重复项。

如果空单元格中有 NaN,可以使用:

m = df['colB'].isin(df['colA'])
df['new_colA'] = df['colB'].where(m).fillna(df['colA'])
df['new_colB'] = df['colB'].mask(m)

输出:

  colA colB new_colA new_colB
0    x  NaN        x      NaN
1    y  NaN        y      NaN
2  NaN    c      NaN        c
3  NaN    d        d      NaN
4  NaN    x        x      NaN
5    d  NaN        d      NaN
6  NaN  NaN      NaN      NaN

空字符串的变体:

m = df['colB'].isin(df['colA'])&df['colB'].ne('')
df['new_colA'] = df['colB'].where(m).fillna(df['colA'])
df['new_colB'] = df['colB'].mask(m).fillna('')

输出:

  colA colB new_colA new_colB
0    x             x         
1    y             y         
2         c                 c
3         d        d         
4         x        x         
5    d             d         
6