【发布时间】:2019-10-16 10:21:04
【问题描述】:
我有一个 (user_id,session_id,items1) 的数据框,每个用户有多个会话,我想为每个用户单独选择每个会话以比较其项目,我使用列表列表但它返回 0。如何懂吗?
items1_list = list(items1_list) # list of all items in each session_id for user_id
for i in data.user_id: # user_id loop
for j in data.session_id: # session_id loop
for l in range(3): # number of sessions for each user, NO 3 for testing
items1_list[l] = data.loc[i].loc[j].items1
print (items1_list)
数据框示例:
user_id session_id items1
1 19 [214561790, 214561790, 214611457, 214611457]
43 [214691587, 214587915]
52 [214716982, 214716984]
2 42 [214819745, 214819745]
58 [214515834, 214515830]
目标输出(如果当前用户 = user1):
[[214561790, 214561790, 214611457, 214611457], [214691587, 214587915], [214716982, 214716984]]
目标输出(如果当前用户 = user2):
[[214819745, 214819745],[214515834, 214515830]]
这是前 11 行(user1、user2、user3 的会话):
{'items1': {(1, 19): [214561790, 214561790, 214611457, 214611457],
(1, 27): [214827028,214827017,214537796,214840762,214707930,214707930,
214585652,214536197,214536195,214646169],
(1, 43): [214691587, 214587915],
(1, 52): [214716982, 214716984],
(1, 54): [214819468, 214716977, 214716977, 214716977, 214716977, 214716939],
(2, 42): [214819745, 214819745],
(2, 58): [214515834, 214515830],
(2, 62): [214714794, 214601407],
(2, 87): [214652220,214840483,214840483,214717286,214558807,214821300,214826908,
214826908,214826908,214554637,214819430,214819430,214826837,214826837,
214820392,214820392,214586694,214819376,214553844,214601229,214555500,
214695127,214819760,214717850,214718385,214743369,214743369],
(3, 28): [214836789, 214836789, 214710804],
(3, 140837): [214586711,214821305,214821305,214821305,214612721,214586711,
214586711,214586711,214837442,214821339,214821339,214553735,214553735]},
'items2': {(1, 19): 0,
(1, 27): 0,
(1, 43): 0,
(1, 52): 0,
(1, 54): 0,
(2, 42): 0,
(2, 58): 0,
(2, 62): 0,
(2, 87):
[214652220,214840483,214743369,214826837,214820392,214826908,214819430],
(3, 28): 0,
(3, 140837): [214821339, 214586711, 214821339, 214586711]}}
【问题讨论】:
-
发布数据框的图像无助于回答。如果无法重现示例数据框,就很难调查问题。请提供一个可以重现数据帧的小代码。做一个简单的
df[:15].to_dict()将提供前 15 行的字典,我们可以使用它来重新创建数据框并查看您的问题。 -
感谢回复.. 前 11 行 3 位用户
-
能否请您发布一个示例数据框和所需的输出?仅从代码和图片中并不清楚任务。例如,您的代码第一行的 items1_list 中的内容是什么?
-
我按 user_id 对用户的会话进行了分组,我希望 user_id 的 (items1) 中的所有项目 - 逐个会话 - 在一个列表中。
标签: python pandas nested-loops