You need to enable JavaScript to run this app. Python Pandas实现UPC批量添加校验位与CSV导出操作
优惠活动
大模型
产品
解决方案
定价
更多

Python Pandas实现UPC批量添加校验位与CSV导出操作

带校验位UPC批量处理实现方案

类型适配说明

  • 读取CSV时指定dtype=str保留UPC前导零的操作完全正确,不需要把字符串形式的UPC整体转为数值类型。
  • 你编写的add_check_digit函数内部已经通过逐字符转int的方式完成了校验计算,和字符串输入天然兼容,无需修改核心计算逻辑。仅需修正原代码的缩进问题:if check_digit == 10分支下的check_digit = 0语句缺少缩进,直接运行会触发语法错误,修正后的完整函数代码如下:
def add_check_digit(upc_str):  
    upc_str = str(upc_str)
    if len(upc_str) != 12: 
        raise Exception("Invalid length")

    odd_sum = 0
    even_sum = 0 
    for i, char in enumerate(upc_str): 
        j = i+1 
        if j % 2 == 0: 
            even_sum += int(char) 
        else:
            odd_sum += int(char) 
    total_sum = (even_sum * 3) + odd_sum 
    mod = total_sum % 10 
    check_digit = 10 - mod 
    if check_digit == 10: 
        check_digit = 0 
    return upc_str + str(check_digit) 

DataFrame列级批量处理实现

  • 不需要手动循环逐条调用函数,借助pandas的apply方法即可把单值处理逻辑直接应用到整列。假设你的原始12位UPC存储在raw_upc列(替换为你CSV里的实际列名即可),核心实现仅需一行代码:
# 生成带校验位的13位UPC,存入新列
upc['full_upc_with_check'] = upc['raw_upc'].apply(add_check_digit)
  • 如果担心个别异常值(比如长度不符合12位要求的脏数据)导致整个流程中断,可以套一层简单的异常捕获,实现容错批处理:
def safe_add_check_digit(upc_str):
    try:
        return add_check_digit(upc_str)
    except Exception as e:
        # 异常值标注错误信息和原始内容,方便后续排查
        return f"INVALID: {e} | 原始值:{upc_str}"

# 替换上面的apply调用,使用容错版本
upc['full_upc_with_check'] = upc['raw_upc'].apply(safe_add_check_digit)

结果导出CSV方法

  • 导出时必须保留字符串存储规则,避免前导零被自动截断,调用to_csv时的关键参数配置如下:
upc.to_csv(
    "/Users/lee/Desktop/upc_with_check_digit.csv",
    index=False,  # 不导出pandas自动生成的无意义行索引
    dtype=str     # 强制所有字段以文本格式存储,保住UPC的前导零
)

实用提示:即使导出时设置了字符串类型,用Excel双击直接打开CSV仍可能丢失前导零,正确打开方式是通过Excel的「数据-从文本/CSV导入」功能,在导入向导中提前把UPC列指定为文本格式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 14:15:05