如何创建客户 X 购买的每件商品的清单?
How to create a list of every items purchased by client X?
如何创建由我指定的客户 ID 购买的每件商品的列表?
这个问题是我正在构建的推荐系统的一部分。
我的数据框有3列['ClientID'],['Products'],['Ratings']
(与NaN不同的'Rating'表示购买的商品)
到目前为止我已经写了这段代码:
首先,我创建了一个枢轴 table,其中垂直索引为 ['ClientID'],水平索引为 ['Products'],['Ratings'] 为值。
piv = datacf1.pivot_table(index=['ClientID'], columns=['Products'], values=['Ratings'])
#Drop all columns containing only zeros, representing users who did not rate/purchased
piv.fillna(0, inplace=True)
piv = piv.T
piv = piv.loc[:, (piv != 0).any(axis=0)]
以下代码使用数据透视表 table 获取客户 X
购买的商品列表
#Create a list of every products traded by user X
purchased = piv.T[piv.loc[5039595.0,:]>0].index.tolist()
purchased
5039595
是 ['ClientID'],我想为其创建我的购买物品列表,我想根据需要应用不同的 ['ClientID']。
我在 运行 创建列表的代码时出错。
为什么我认为 'create a list' 代码给我一个错误:
我相信此代码将垂直索引读取为 ['0','1','2','3',...] 因此它期望找到列 '5039595',但是如前所述,垂直索引代表['ClientID'] 是随机的。
这是枢轴 table 的垂直索引 ['ClientID'] 的快照:
如何修复我的代码以查找我要为其创建列表的客户端 X?
或者有其他方法吗?也许我的原始数据集有 3 列 ['ClientID']、['Products']、['Ratings']
我认为最好的方法是 select 所有包含给定客户购买的行,然后从这些行中获取所有唯一的产品值。它看起来像这样:
desired_rows = (data["ClientID"].isin([client_id]) & data[Ratings].notnull())
product_list = data.loc[desired_rows, "Products"].unique().tolist()
print(product_list)
如何创建由我指定的客户 ID 购买的每件商品的列表?
这个问题是我正在构建的推荐系统的一部分。
我的数据框有3列['ClientID'],['Products'],['Ratings']
(与NaN不同的'Rating'表示购买的商品)
到目前为止我已经写了这段代码:
首先,我创建了一个枢轴 table,其中垂直索引为 ['ClientID'],水平索引为 ['Products'],['Ratings'] 为值。
piv = datacf1.pivot_table(index=['ClientID'], columns=['Products'], values=['Ratings'])
#Drop all columns containing only zeros, representing users who did not rate/purchased
piv.fillna(0, inplace=True)
piv = piv.T
piv = piv.loc[:, (piv != 0).any(axis=0)]
以下代码使用数据透视表 table 获取客户 X
购买的商品列表#Create a list of every products traded by user X
purchased = piv.T[piv.loc[5039595.0,:]>0].index.tolist()
purchased
5039595
是 ['ClientID'],我想为其创建我的购买物品列表,我想根据需要应用不同的 ['ClientID']。
我在 运行 创建列表的代码时出错。
为什么我认为 'create a list' 代码给我一个错误: 我相信此代码将垂直索引读取为 ['0','1','2','3',...] 因此它期望找到列 '5039595',但是如前所述,垂直索引代表['ClientID'] 是随机的。
这是枢轴 table 的垂直索引 ['ClientID'] 的快照:
如何修复我的代码以查找我要为其创建列表的客户端 X?
或者有其他方法吗?也许我的原始数据集有 3 列 ['ClientID']、['Products']、['Ratings']
我认为最好的方法是 select 所有包含给定客户购买的行,然后从这些行中获取所有唯一的产品值。它看起来像这样:
desired_rows = (data["ClientID"].isin([client_id]) & data[Ratings].notnull())
product_list = data.loc[desired_rows, "Products"].unique().tolist()
print(product_list)