Это со ссылкой на мой предыдущий вопрос Singular and plural phrase matching in pandas. Поскольку ожидаемая функциональность не была достигнута из помощи, предоставленной другими, я отправляю ее с подходом, который я придерживался, и тем, чего я действительно должен был достичь.Несколько фраз, соответствующих Python Pandas
Ниже приведены двухфазные наборы данных и код.
ingredients=pd.Series(["vanilla extract","walnut","oat","egg","almond"])
df=pd.DataFrame(["1 teaspoons vanilla extract","2 eggs","3 cups chopped walnuts","4 cups rolled oats","1 (10.75 ounce) can Campbell's Condensed Cream of Chicken with Herbs Soup","6 ounces smoke-flavored almonds, finely chopped","sdfgsfgsf","fsfgsgsfgfg"])
То, что я просто нужно было соответствовать фразы в серии ингредиентов с фразами в DataFrame. В псевдокоде,
Если ингредиенты (единственного или множественного числа), найденный в фразе в DataFrame, вернуть ингредиент. Или иначе, верните false.
Я разработал код из инструкций, приведенных в другом вопросе, который я задал.
results=ingredients.apply(lambda x: any(df[0].str.lower().str.contains(x.lower())))
df["existence"]=results
df
Проблема с моим кодом является то, что он проверяет только количество элементов в серии и перестать искать. В результате я действительно нуждаюсь в следующем:
0 existence
0 1 teaspoons vanilla extract vanilla
1 2 eggs egg
2 3 cups chopped walnuts walnut
3 4 cups rolled oats oat
4 1 (10.75 ounce) can..... False
5 6 ounces smoke-flavored almonds..... almond
6 sdfgsfgsf False
7 fsfgsgsfgfg False
Может ли кто-нибудь сказать мне, как мне достичь этой функциональности? Я провел дни, проверяя это, но не везет наконец. Всем спасибо.
* Результат мне действительно нужно следующим образом *, то, что вы получаете сейчас? –
@Thomas The Picture прямо под кодом - это то, что я сейчас получаю. То, что мне нужно, упоминается в конце. –
@ стробижев вы хотите применить функцию следующим образом? Это вызвало у меня ошибку. 'results = components.apply (lambda x: where (df [0] .str.lower(). str.contains (x.lower()), True))' –