代码之家  ›  专栏  ›  技术社区  ›  Shuvayan Das

从数据帧的列创建python字典

  •  1
  • Shuvayan Das  · 技术社区  · 8 年前

    class   name
    Pref    Ab
    Val     BE
    Base    es
    Pref    Cw
    Base    SS
    

    该数据位于数据框中,我需要为class:name创建映射,如下所示:

    Pref : ['Ab','Cw'],
    Val  : ['BE'],
    Base : ['es','SS']
    

    这将是一个字典,其中将包含类及其组件名称的映射。键将是class,它的值将是该类中的名称,因此每个类都有一个值列表,其中每个类的列表长度可能不同。 有人能帮我做这个吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   cs95 abhishek58g    8 年前

    你要找一个 groupby + to_dict 操作-

    r = df.groupby('class').name.apply(list).to_dict()
    

    r = df.groupby('class').name.agg(pd.Series.tolist).to_dict()
    

    r
    {'Base': ['es', 'SS'], 'Pref': ['Ab', 'Cw'], 'Val': ['BE']}
    

    工作原理-

    • 这个 class 该列由3个类别组成。我们希望每个类别都作为索引。
    • name 列需要按类分组并显示在列表中

    因此 子句 操作是这里最简单的事情。分组并应用/聚合 list 得到一个具有索引的序列-

    class
    Base    [es, SS]
    Pref    [Ab, Cw]
    Val         [BE]
    Name: name, dtype: object
    

    使命感 这会给你想要的。