在上一篇文章中,我曾要求使用Python中的字典从数据帧构造序列。
Construct sequences from a dataframe using dictionaries in Python
我想更改答案中建议的功能,使其仅包含列表中没有日期的项目。
具有:
{1: [1, 2], 2: [3, 1,], 4: [5, 3, 1]}
代替 :
{1: [[1, 'date_1'], [2, 'date_2']],
2: [[3, 'date_1'], [1, 'date_3']],
4: [[5, 'date_2'], [3, 'date_3'], [1, 'date_5']]}
改变功能:
fnc = lambda x: x.sort_values('date').values.tolist()
df.set_index('users').groupby(level=0).apply(fnc).to_dict()
最佳答案
您可以选择lambda
中的items列,因为它在整个df上都被调用,您可以从结果中进行子选择,因此您只会得到结果中感兴趣的列:
In [249]:
fnc = lambda x: x.sort_values('date')['items'].values.tolist()
df.set_index('users').groupby(level=0).apply(fnc).to_dict()
Out[249]:
{1: [1, 2], 2: [3, 1], 4: [5, 3, 1]}