我被一个项目卡住了。我试图通过检查两列(a &B),如果A中的值存在于B中的任何位置,或者B的值存在于A中的任何位置,则返回该值,否则返回"。例如,有;
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