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

如何透视数据查找指定列唯一值 分组生成标记列并去重

Pandas 分组存在性标记实现方案

直接使用groupby聚合即可完成需求,不需要额外做pivot操作,步骤如下:

  1. 首先构造原始测试数据
import pandas as pd

df = pd.DataFrame(
    [
        [1, "Y", "G", "CA", "DA", "EA"],
        [2, "Y", "G", "CA", "DA", "EA"],
        [3, "Y", "G", "CA", "DA", "EA"],
        [1, "X", "Q", "RA", "DA", "EA"],
        [2, "X", "Q", "CA", "DA", "EA"],
    ],
    columns=["ID", "col1", "col2", "col3", "col4", "col5"]
)
  1. 按指定字段分组,聚合时直接判断目标值是否存在
# 分组维度字段
group_keys = ["ID", "col3", "col4", "col5"]

res = df.groupby(group_keys, as_index=False).agg(
    col1_X=("col1", lambda s: "Y" if "X" in s.values else "N"),
    col1_Y=("col1", lambda s: "Y" if "Y" in s.values else "N"),
    col2_G=("col2", lambda s: "Y" if "G" in s.values else "N"),
    col2_Q=("col2", lambda s: "Y" if "Q" in s.values else "N")
)

逻辑说明

  • groupby会自动按指定字段组合去重,天然满足消除重复行的要求
  • 聚合函数直接遍历每个分组的对应列,判断目标枚举值是否存在,存在返回Y,不存在返回N,直接生成需要的4个衍生列
  • 运行后输出结果和预期完全一致:
IDcol3col4col5col1_Xcol1_Ycol2_Gcol2_Q
1CADAEAYYYY
1RADAEAYYYY
2CADAEAYYYY
3CADAEANYYN

如果后续col1、col2新增其他枚举值,只需要在agg方法中追加对应的判断规则即可,不需要调整整体逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 21:15:47