python–PandasDataFrame.groupby()到具有多列值的字典 | 您所在的位置:网站首页 › python调用字典的值 › python–PandasDataFrame.groupby()到具有多列值的字典 |
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 实验室设备网 版权所有 |