3 回答

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊
與此答案類似,您可以使用列表理解。假設(shè)您的數(shù)據(jù)是干凈的,例如沒(méi)有空值。
zipper = zip(df['col1'], df['col2'])
df['status'] = [i.casefold() in j.casefold().split('|') for i, j in zipper]
print(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

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
也許您應(yīng)該首先將數(shù)據(jù)框轉(zhuǎn)換為更易于使用的格式。
我建議這樣的事情:
>>> 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
現(xiàn)在你可以這樣做:
>>> 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
此解決方案假定您分隔的狀態(tài)指示器'|'是唯一的,即您不能擁有類似'x|x|x'.
如果您不喜歡該建議,請(qǐng)考慮:
>>> 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
添加回答
舉報(bào)