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

pandas中如何按条件修复DataFrame信用卡BIN列的6位格式

Pandas实现信用卡BIN补前导零方案

问题说明

现有采购数据集包含ORDER_ID、BIN、PURCHASE AMOUNT三个字段,样例数据如下:

ORDER_ID |  BIN | PURCHASE AMOUNT 
1          383218  56.43
2          nan      46
3          3212     56

任务要求:校验信用卡BIN格式是否为6位,对因数值存储丢失前导零、长度不足6位的BIN值补全前导零。
原有尝试代码未生效,代码如下:

payments_df['bin'] for num in payments_df['bin']: if len(num)<6: num.zfill(6)

原有代码问题

  • 写法为残缺的列表推导逻辑,没有生成新值序列,也未将结果赋值回DataFrame列
  • 未处理NaN空值,直接对空值取长度、调用字符串方法会触发报错
  • 未适配BIN列的数值存储格式:如果列是int/float类型,直接调用len()会直接抛出类型错误,浮点数转字符串还会带.0后缀导致结果不符合要求

正确实现代码

根据BIN列的存储类型选择对应写法即可:

  • 如果BIN列为数值类型(int/float,最常见的前导零丢失场景):
import pandas as pd
import numpy as np

payments_df['BIN'] = payments_df['BIN'].apply(
    lambda x: str(int(x)).zfill(6) if pd.notna(x) else np.nan
)

逻辑说明:非空值先转整数去掉浮点数后缀,再转字符串后用zfill(6)自动在前面补零到6位长度,空值保留为NaN。

  • 如果BIN列已经是字符串类型:
payments_df['BIN'] = payments_df['BIN'].apply(
    lambda x: x.zfill(6) if pd.notna(x) else x
)

处理后样例结果

ORDER_ID |  BIN   | PURCHASE AMOUNT 
1          383218  56.43
2          nan     46
3          003212  56

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 06:51:38