Возможно, вам следует сначала перенести ваш фрейм данных в формат, с которым проще работать.
Я предлагаю что-то вроде этого:
>>> df = pd.concat([df['col1'], df['col2'].str.upper().str.split('|', expand=True)], axis=1)
>>> df
col1 0 1 2
0 A A X Y
1 B A X Y
2 C C X Z
3 D E J Y
Теперь вы можете сделать:
>>> df['status'] = df.apply(lambda s: s.duplicated().any(), axis=1)
>>> df
col1 0 1 2 status
0 A A X Y True
1 B A X Y False
2 C C X Z True
3 D E J Y False
В этом решении предполагается, что индикаторы состояния, которые вы разделяете с помощью '|'
, уникальны, то есть вы не можете иметь что-то вроде 'x|x|x'
.
Если вам не нравится предложениерассмотрим:
>>> df['status'] = df.apply(lambda row: row[0].lower() in row[1].split('|'), axis=1)
>>> df
col1 col2 status
0 A a|x|y True
1 B a|x|y False
2 C c|x|z True
3 D e|j|y False