【发布时间】:2020-11-26 19:22:54
【问题描述】:
如何为我指定的客户 ID 购买的每件商品创建一个列表?
这个问题是我正在构建的推荐系统的一部分。
我的数据框有 3 列 ['ClientID'],['Products'],['Ratings']
(与 NaN 不同的“评级”代表购买的产品)
到目前为止,我已经编写了以下代码:
首先,我创建了一个数据透视表,其中垂直索引为 ['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)]
以下代码使用数据透视表获取客户 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']。
运行代码创建列表时出现错误。
为什么我认为“创建列表”代码会给我一个错误: 我相信这段代码将垂直索引读取为 ['0','1','2','3',...] 所以它希望找到列 '5039595',但是如前所述,垂直索引表示['ClientID'] 是随机的。
这是数据透视表的垂直索引 ['ClientID'] 的快照:
如何修复我的代码以查找要为其创建列表的客户端 X?
或者还有其他方法吗?也许我的原始数据集有 3 列 ['ClientID'],['Products'],['Ratings']
【问题讨论】:
标签: python pandas list pivot-table recommender-systems