我想应用一个函数,返回引用列表中找不到的元素。我想得到的是下面的内容。
import pandas as pd
product_list = ['Chive & Garlic', 'The Big Smoke',
'Jalapeno & Lemon', 'Spinach & Artichoke']
data = [['ACTIVE BODY', ['Chive & Garlic', 'The Big Smoke'], ['Jalapeno & Lemon', 'Spinach & Artichoke']],
['AG VALLEY FOODS', ['Chive & Garlic', 'Spinach & Artichoke'], ['The Big Smoke', 'Jalapeno & Lemon']],
['ALIM MICHEL HALLORAN', ['The Big Smoke', 'Chive & Garlic'], ['Jalapeno & Lemon', 'Spinach & Artichoke']],
['ALIMENTATION IAN DES', ['The Big Smoke', 'Jalapeno & Lemon'],['Chive & Garlic', 'Spinach & Artichoke']]]
df = pd.DataFrame(data, columns=['store', 'products', 'missing_products'])
其中missing_products
是列表类型的产品,在products
列的数组中找不到
我尝试了以下功能,但无法正常工作
def gap(row):
for item in product_list:
if item not in row:
return item
值得注意的是,products
列中的每个值都是一个数组,而不是字符串列表。不确定这是否会产生影响。
[['ACADEMIE DU GOURMET ACADEMY INC', array([nan], dtype=object)],
['ACTIVE BODY',
array(['Chive & Garlic', 'Garlic Tzatziki', 'The Big Smoke'], dtype=object)],
['AG VALLEY FOODS',
array(['Chive & Garlic', 'Spinach & Artichoke'], dtype=object)],
['ALIM MICHEL HALLORAN',
array(['The Meadow', 'The Big Smoke', 'Chive & Garlic',
'Jalapeno & Lemon', 'Dill & Truffle'], dtype=object)],
['ALIMENTATION IAN DES',
array(['The Big Smoke', 'Jalapeno & Lemon'], dtype=object)]]
提前感谢您的帮助!
3条答案
按热度按时间t5zmwmid1#
创建帮助器列表并追加匹配值:
具有列表解析的备选项:
仅列出理解解决方案:
lx0bsm1f2#
我建议使用
set
操作,这应该是最有效的:输出:
41zrol4v3#
您可以将 Dataframe 创建为二进制 Dataframe ,其中如果商店有该产品,则放置
1
,如果没有,则放置0
。这样,它可以更通用,而不仅仅是数据框中的列表。