【发布时间】:2015-11-23 05:32:49
【问题描述】:
我有一个pandas系列,另外一句Dataframe如下(这里只添加数据的摘要)。
#df
0 1 teaspoon vanilla extract
1 2 eggs
2 1 cup chopped walnuts
3 1 cup rolled oats
和
#ingredients
0 vanilla
1 walnut
2 oat
3 egg
我正在应用以下函数来检查#ingredients 中的成分是否在#df 字段中可用。
masked = map(lambda x: any(ingredients.apply(str.lower).isin(x)),
df[0].apply(str.lower).apply(str.split))
df['Ingredient Available'] = masked
问题是当成分的复数形式存在于例如:eggs 掩码字段返回false(甚至认为egg 在#ingredient 列表中)。谁能在不考虑单数还是复数的情况下向我建议一种方法来完成这项工作? (我遵循pandas find strings in common among Series 中建议的路径,请不要将此标记为重复,因为该问题未提及此类问题)。
非常感谢
【问题讨论】:
-
那么 2 个 dfs 的长度是否相同?看起来成分只是一个大查找表,对吗?
-
是的,它有 381 种成分。
-
我想我想寻找一种方法来寻找这样的东西。
egg in eggs因为它返回 true。我的想法不清楚是谁将其添加到函数中 -
您可以看看合并TextBlob 库。它支持变形变化(
singularize()和pluralize())。这将捕获与单数等价物不同的复数形式(例如 goose 和 geese)。