【问题标题】:Python : extracting only the first element on a dictionary of list using functionsPython:使用函数仅提取列表字典中的第一个元素
【发布时间】:2017-06-04 11:14:07
【问题描述】:

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

【问题讨论】:

    标签: python function pandas dictionary dataframe


    【解决方案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]}
    

    【讨论】:

    • 请用更新的代码编辑您的问题,您所说的不起作用,它对我有用,所以您需要发布原始数据、创建 df 的代码和失败的代码
    • 对不起,我的回复晚了,我写了这个fnc = lambda x: x.sort_values('date')[0:2].values.tolist()。但我得到了和以前一样的结果。
    • 当我写我的专栏名称时fnc = lambda x: x.sort_values('date')['id1','id2'].values.tolist()我有错误KeyError: ('id1', 'id2')
    • 您需要在列列表周围添加额外的括号
    • 谢谢@EdChum,只是我把我用作索引的列的名称也放了,我不应该放的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-12
    • 2021-01-26
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多