Python:使用函数仅提取列表字典中的第一个元素

时间:2017-01-19 16:41:33

标签: python function pandas dictionary dataframe

在上一篇文章中,我曾要求使用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()

1 个答案:

答案 0 :(得分:1)

您可以选择lambda中的项目列,因为它在整个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]}