繁体   English   中英

使用Python Pandas检查项目是否先前出现在项目列表中

[英]Check whether an item appears previously in a list of items using Python Pandas

我有下表,其中包含ID,对于每个ID,我都有购物篮1,购物篮2,最后还有购物篮中的产品。

我想在排序表上查找(从AZ,购物篮1 ASC和购物篮2 ASC对ID进行排序)是否每个ID的每个产品先前出现过(对于同一ID),然后将Y或N放在新列中(E列) 。

下面是第一个ID的示例:

111AAA222 = [产品1, 产品2,产品3,产品1产品2,产品3,产品1产品 4]

111AAA222 = [N,N,N,Y,Y,Y,Y,N]

该示例显示,列表中从第3位到第6位的产品以前出现在同一列表中。

我在使用python pandas创建具有值Y和N的新列(列E:已存在)时遇到困难。

表-原始数据

创建一个df_new ,对数据进行排序,然后将重复项放在“ ID”和“ Product”两列上。 然后创建列N填充的Existed列,因为df_new中的行不是重复项

df_new = df.sort_values(['ID','Basket 1','Basket 2'],0)[['ID','Product']].drop_duplicates()
df_new['Existed'] = 'N'

现在join此列df_new['Existed']与你的DF和充满“Y”缺失值

df = df.join(df_new['Existed']).fillna('Y')

如果要列出产品清单并存在,请打印此清单

df.groupby('ID')['Product','Existed'].agg(lambda x: list(x))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM