У меня есть датафрейм, который вы можете построить с помощью этого:
dflist=[['123',['abc','qw3','123']],
['ab12',['3e4r5','12we3','asd23','q2w3']]]
df=pd.DataFrame(dflist,columns=['check','checklist'])
И выглядит так:
check checklist
0 123 [abc, qw3, 123]
1 ab12 [3e4r5, 12we3, asd23, q2w3]
Я хочу проверить, есть ли пункт в столбце «check» в списке в столбце «checklist». Поэтому я хочу, чтобы итоговый кадр данных выглядел следующим образом:
check checklist checkisin
0 123 [abc, qw3, 123] True
1 ab12 [3e4r5, 12we3, asd23, q2w3] False
Я пробовал несколько вещей, включая использование .isin в различных формах, включая apply / lambda. и напрямую.
Это:
df['checkisin']=df.check.isin(df.checklist)
производит:
check checklist checkisin
0 123 [abc, qw3, 123] False
1 ab12 [3e4r5, 12we3, asd23, q2w3] False
, который имеет два ложных.
Попробуем это:
df ['checkisin'] = df.apply (лямбда-x: x.check.isin (x.checklist))
выдает эту ошибку:
AttributeError: ("'Series' object has no attribute 'check'", 'occurred at index check')
Попытка этого:
df['checkisin']=df.apply(lambda x:x['check'] in x.checklist)
выдает эту ошибку:
KeyError: ('check', 'occurred at index check')
Я уверен, что мне здесь не хватает чего-то простого. Я знаю, что мог бы зациклить это, но ищу мудрое решение Pandas Dataframe, так как у меня очень большой DF, и он пытается «наиболее» эффективно обрабатывать.
Спасибо!