You need to enable JavaScript to run this app. 如何按数据集第三列取值、第四列0/1值完成数据分组拆分
优惠活动
大模型
产品
解决方案
定价
更多

如何按数据集第三列取值、第四列0/1值完成数据分组拆分

数据集双层分组解决方案

你原有代码仅实现了按第四列的单层分组,没有加入第三列的第一层分组逻辑,也没有预初始化无匹配数据的空列表,因此无法满足需求。修正后的实现代码如下:

def separate_by_class(dataset):
    # 预初始化第三列1~4的分组,每个分组下提前创建第四列0、1对应的空列表
    separated = {
        1: {0: [], 1: []},
        2: {0: [], 1: []},
        3: {0: [], 1: []},
        4: {0: [], 1: []}
    }
    for row in dataset:
        # 取第三列(下标为2)作为第一层分组键
        level1_key = row[2]
        # 取第四列(下标为3)作为第二层分组键
        level2_key = row[3]
        separated[level1_key][level2_key].append(row)
    return separated   

dataset = [[1, 20, 1, 0],
           [2, 21, 2, 0],
           [3, 22, 2, 0],
           [4, 23, 3, 1],
           [5, 20, 1, 0],
           [6, 23, 3, 0],
           [7, 24, 4, 1],
           [8, 22, 4, 0],
           [9, 21, 1, 1]
          ]
separated = separate_by_class(dataset)
separated

运行后返回的结构与你要求的分组规则完全匹配,输出如下:

{
    1: {0: [[1, 20, 1, 0], [5, 20, 1, 0]], 1: [[9, 21, 1, 1]]},
    2: {0: [[2, 21, 2, 0], [3, 22, 2, 0]], 1: []},
    3: {0: [[6, 23, 3, 0]], 1: [[4, 23, 3, 1]]},
    4: {0: [[8, 22, 4, 0]], 1: [[7, 24, 4, 1]]}
}

如果需要按你示例的格式逐行打印结果,可以追加以下代码:

for col3_val in separated:
    print(f"针对第三列取值为{col3_val}、第四列取值为0和1的分组结果:")
    print(separated[col3_val])

内容的提问来源于stack exchange,提问作者user3176335

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 14:45:04