我被困在一个项目上。我试图通过检查两个列(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,我只是使用条件格式来突出显示重复的内容。
发布于 2022-06-03 20:07:24
如果空单元格中有can,则可以使用:
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 https://stackoverflow.com/questions/72494396
复制相似问题