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

Python pandas实现按单元格字符长度动态调整的列数据脱敏功能

修正后可实现动态长度脱敏的代码

import pandas as pd

def masking(filename, columnname, value):
    df = pd.read_csv(filename)
    # 统一转为字符串处理,兼容整数、字符串类型列
    col_str = df[columnname].astype(str)
    str_len = col_str.str.len()
    
    if value == 0 or value == '':
        # 全量脱敏:掩码长度等于原字符串长度,向量化操作效率更高
        df[columnname] = 'X' * str_len
    else:
        # 计算掩码长度,最小为0避免负长度
        mask_len = (str_len - value).clip(lower=0)
        # 掩码 + 保留的末尾value位
        df[columnname] = ('X' * mask_len) + col_str.str[-value:]
    print(df)

# 测试示例:对Type 1列全量脱敏
masking("path/to/file", "Type 1", 0)
# 测试示例:对phonenumber列保留后4位,前面动态脱敏
# masking("path/to/file", "phonenumber", 4)

核心修改逻辑

  • 移除固定长度的maskvalue,改用'X' * 长度的方式动态生成每个单元格对应的掩码
  • 所有列值先统一转为字符串处理,自动兼容整数、字符串等不同数据类型的列
  • 补充边界处理:当设置保留位数value大于等于单元格内容长度时,自动对整个单元格做全量脱敏
  • 采用pandas向量化操作实现,比逐行apply处理效率更高,适合大数据量场景

效果验证

使用你提供的测试数据对Type 1列执行全量脱敏后,输出结果和预期效果完全一致:值为Grass(长度5)的单元格变为XXXXX,值为Fire(长度4)的单元格变为XXXX。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:18:03