首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Python中的字典从数据中构造序列

使用Python中的字典从数据中构造序列
EN

Stack Overflow用户
提问于 2016-12-26 10:44:29
回答 1查看 123关注 0票数 0

我想用Python中的字典来构建用户购买历史的序列。我希望这些序列按日期排列。

我的数据中有3列:

代码语言:javascript
复制
users        items         date

1             1            date_1 
1             2            date_2
2             1            date_3
2             3            date_1
4             5            date_2
4             1            date_5
4             3            date_3

结果应该是这样:

代码语言:javascript
复制
{1: [[1,date_1],[2,date_2]], 2:[[3,date_1],[5,date_2],[1,date_3]], 4:[[5,date_2],[3,date_3][1,date_5]]}

我的代码是:

代码语言:javascript
复制
df_sub = df[['uid', 'nid', 'date']] 
dic3 = df_sub.set_index('uid').T.to_dict('list')

我的结果是:

代码语言:javascript
复制
{36864: [258509L, '2014-12-03'], 548873: [502105L, '2015-09-08'], 42327: [492268L, '2015-01-29'], 548873: [370049L, '2015-02-18'], 36864: [258909L, '2016-01-13'] ... }

但我想按用户分组:

代码语言:javascript
复制
 {36864: [[258509L, '2014-12-03'],[258909L, '2016-01-13']], 548873: [[502105L, '2015-09-08'],[370049L, '2015-02-18']], 42327: [492268L, '2015-01-29'] }

帮帮忙,拜托!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-26 11:28:34

首先,将用户设置为索引并执行groupby w.r.t。然后,您可以传递一个函数,根据每个组的date列对其排序,并使用.values提取它的底层数组部件。

使用.tolist返回--这是list等效的。这给您提供了所需的格式。最后,使用.to_dict作为字典获得最终输出。

代码语言:javascript
复制
fnc = lambda x: x.sort_values('date').values.tolist()
df.set_index('users').groupby(level=0).apply(fnc).to_dict()

生产:

代码语言:javascript
复制
{1: [[1, 'date_1'], [2, 'date_2']],
 2: [[3, 'date_1'], [1, 'date_3']],
 4: [[5, 'date_2'], [3, 'date_3'], [1, 'date_5']]}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41330030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档