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

GroupBy后基于组内条件的跨组脱敏数据处理问询

实现跨组脱敏(Cross Group Redaction)

需求说明

按id分组,若组内存在redact列非空的脱敏记录,则将组内其他redact为空的行标记为crossGroup。你已完成value < 4的条件脱敏,需补充同组其他行的标记逻辑。

初始表格

idvalueredact
A3N < 4
A5
B6
B6
C5
C3N < 4
D5
D6
E2N < 4
E8

目标表格

idvalueredact
A3N < 4
A5crossGroup
B6
B6
C5crossGroup
C3N < 4
D5
D6
E2N < 4
E8crossGroup

解决方案(以Pandas为例)

通过分组标记+逐行判断实现跨组脱敏:

代码实现

import pandas as pd

# 构造初始数据(替换为你的实际数据读取逻辑)
data = {
    'id': ['A', 'A', 'B', 'B', 'C', 'C', 'D', 'D', 'E', 'E'],
    'value': [3, 5, 6, 6, 5, 3, 5, 6, 2, 8],
    'redact': ['N < 4', '', '', '', '', 'N < 4', '', '', 'N < 4', '']
}
df = pd.DataFrame(data)

# 1. 标记每个组是否存在脱敏记录
df['has_redact'] = df.groupby('id')['redact'].transform(lambda x: x.str.strip().ne('').any())

# 2. 更新redact列:空值且组内有脱敏记录的行标记为crossGroup
df['redact'] = df.apply(
    lambda row: 'crossGroup' if (row['has_redact'] and row['redact'].strip() == '') else row['redact'],
    axis=1
)

# 可选:删除辅助列
df = df.drop('has_redact', axis=1)

print(df)

逻辑说明

  • groupby('id')['redact'].transform(...):对每个分组计算是否存在非空脱敏记录,结果广播到组内所有行,生成辅助标记列
  • apply逐行判断:若当前组存在脱敏记录且当前行redact为空,则替换为crossGroup,否则保留原内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 10:09:57