python–PandasDataFrame.groupby()到具有多列值的字典 您所在的位置:网站首页 python调用字典的值 python–PandasDataFrame.groupby()到具有多列值的字典

python–PandasDataFrame.groupby()到具有多列值的字典

#python–PandasDataFrame.groupby()到具有多列值的字典| 来源: 网络整理| 查看: 265

type(Table)pandas.core.frame.DataFrameTable======= ======= =======Column1 Column2 Column30 23 11 5 21 2 31 19 52 56 12 22 23 2 43 14 54 59 15 44 15 1 25 87 3

对于任何有熊猫的人,我如何使用.groupby()方法构建一个多值字典?

我想输出类似于这种格式:

{ 0: [(23,1)] 1: [(5, 2), (2, 3), (19, 5)] # etc... }

其中Col1值表示为键,相应的Col2和Col3是元组,用于为每个Col1键打包.

我的语法只用于将一个列汇集到.groupby()中:

Table.groupby('Column1')['Column2'].apply(list).to_dict()# Result as expected{ 0: [23], 1: [5, 2, 19], 2: [56, 22], 3: [2, 14], 4: [59], 5: [44, 1, 87]}

但是,为索引指定多个值会导致返回值的列名:

Table.groupby('Column1')[('Column2', 'Column3')].apply(list).to_dict()# Result has column namespace as array value{ 0: ['Column2', 'Column3'], 1: ['Column2', 'Column3'], 2: ['Column2', 'Column3'], 3: ['Column2', 'Column3'], 4: ['Column2', 'Column3'], 5: ['Column2', 'Column3'] }

我如何返回值数组中的元组列表?

解决方法:

自定义您在apply中使用的功能,以便返回每个组的列表列表:

df.groupby('Column1')[['Column2', 'Column3']].apply(lambda g: g.values.tolist()).to_dict()# {0: [[23, 1]], # 1: [[5, 2], [2, 3], [19, 5]], # 2: [[56, 1], [22, 2]], # 3: [[2, 4], [14, 5]], # 4: [[59, 1]], # 5: [[44, 1], [1, 2], [87, 3]]}

如果需要显式的元组列表,请使用list(map(tuple,…))进行转换:

df.groupby('Column1')[['Column2', 'Column3']].apply(lambda g: list(map(tuple, g.values.tolist()))).to_dict()# {0: [(23, 1)], # 1: [(5, 2), (2, 3), (19, 5)], # 2: [(56, 1), (22, 2)], # 3: [(2, 4), (14, 5)], # 4: [(59, 1)], # 5: [(44, 1), (1, 2), (87, 3)]}



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有