我有一个数据框,我只想要包含某个值的值。我已经实现了。我现在想要的是按用户分组的列表。我得到的是列表中数据框的每个单个元素。我如何获得此清单[[User1.item1, ..., user1, itemn], ..., [Usern.item1, ..., usern, itemn]]
d = {'userid': [0, 0, 0, 1, 2, 2, 3, 3, 4, 4, 4],
'itemid': [715, 845, 98, 12324, 85, 715, 2112, 85, 2112, 852, 102]}
df = pd.DataFrame(data=d)
print(df)
users = df.loc[df.itemid == 715, "userid"]
df_new = df.loc[df.userid.isin(users)]
list_new = df_new[['itemid']].values.tolist()
# What I get
[[715],[845],[98],[85],[715]]
# What I want
[[715,845,98],[85,715]]
如果要在一行中完成所有代码,则可以使用列表理解:
[x for x in [*df.groupby('userid')['itemid'].apply(list)] if 715 in x]
[[715, 845, 98], [85, 715]]
编码:
[*df.groupby('userid')['itemid'].apply(list)]
相当于
df_new.groupby("userid")['itemid'].apply(list).tolist()
其余部分只是循环浏览从该主列表^^^生成的内容,以查看是否715
在任何子x
列表中,上面代码中的子列表在哪里。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句