You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按唯一ID分组 合并同ID下各列1值为单行结果

实现方案

你的需求核心逻辑非常明确:按ID分组后,对V1~V7每一列取最大值。由于所有V列的取值只有0和1,只要某ID对应的列任意一行出现过1,最大值即为1;所有行都是0时最大值为0,完全匹配你需要的聚合效果。

下面给3种常用场景下的实现方式,你可以根据自己熟悉的工具选择:


方法1:Python + Pandas(千行以上数据效率最高,代码最简)

  • 若未安装pandas,先在终端执行安装命令:
    pip install pandas
    
  • 将原始数据保存为制表符分隔的文本/CSV文件(命名为raw_data.csv),运行以下代码即可直接输出结果:
    import pandas as pd
    
    # 读取原始数据,若为逗号分隔的CSV则删除sep='\t'参数
    df = pd.read_csv("raw_data.csv", sep="\t")
    # 按ID分组聚合,对所有V列取最大值
    result = df.groupby("ID", as_index=False).agg({f"V{i}":"max" for i in range(1,8)})
    # 保存结果到文件
    result.to_csv("agg_result.csv", sep="\t", index=False)
    
  • 运行后生成的agg_result.csv和你给出的期望输出完全一致。

方法2:Excel/WPS 可视化操作(无需写代码)

  • 选中全部原始数据区域,点击「插入」选项卡-「数据透视表」,选择将透视表放在新工作表中
  • 在右侧字段配置面板,将ID字段拖入「行」区域,将V1~V7所有字段拖入「值」区域
  • 逐个点击值区域内的V1~V7字段,选择「值字段设置」,将汇总方式从默认的「计数」修改为「最大值」,点击确定
  • 透视表会自动完成聚合,将结果复制为普通数值、调整列格式即可得到最终输出。

方法3:R语言实现

使用dplyr包的分组聚合逻辑即可快速完成,代码如下:

library(dplyr)

# 读取原始数据
raw_df <- read.delim("raw_data.csv", sep="\t")
# 按ID分组对V列取最大值
result_df <- raw_df %>%
  group_by(ID) %>%
  summarise(across(V1:V7, max)) %>%
  ungroup()
# 写出结果
write.table(result_df, "agg_result.csv", sep="\t", row.names = FALSE, quote = FALSE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:24:11