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

Pandas填充DataFrame指定列及重复账号、多账户校验实现问题

Pandas银行账户数据处理实现方案

假设你使用的原始DataFrame命名为df,已包含Account number、Account balance、Account name三个基础字段,以下是三个需求的对应实现代码:

1. 填充Account indicator列

规则为根据同一账号出现的总次数,生成3位长度的标识,不足3位前补零:

# 统计每个账号的出现次数,格式化为3位字符串生成标识
df['Account indicator'] = df.groupby('Account number')['Account number']\
    .transform('count')\
    .astype(str)\
    .str.zfill(3)

如果要求固定前缀为00、直接拼接次数(比如出现10次生成0010),可将最后一行替换为df['Account indicator'] = '00' + df.groupby('Account number')['Account number'].transform('count').astype(str)

2. 联合账户余额一致性校验

联合账户定义为同一账号出现次数≥2的账户,校验同一账号下所有账户余额是否完全一致:

# 生成每个账号的余额校验结果:True为一致,False为不一致
df['balance_check_pass'] = df.groupby('Account number')['Account balance']\
    .transform('nunique') == 1
# 提取校验不通过的联合账号列表
invalid_joint_accounts = df[df['Account indicator'] != '001']\
    .loc[~df['balance_check_pass'], 'Account number']\
    .unique()\
    .tolist()
if invalid_joint_accounts:
    print(f"余额校验不通过的联合账号:{invalid_joint_accounts}")
else:
    print("所有联合账户余额校验通过")

3. 识别同一姓名对应多账户情况

统计每个账户名绑定的不同账号数量,筛选出绑定多个账号的用户:

# 生成每个用户的账号数量统计
user_account_cnt = df.groupby('Account name')['Account number'].nunique()
# 提取绑定多个账号的用户列表
multi_account_users = user_account_cnt[user_account_cnt > 1].index.tolist()
if multi_account_users:
    print(f"存在多账户的用户:{multi_account_users}")
else:
    print("未发现同一用户对应多个不同账号的情况")

测试用例参考:
输入测试数据运行以上代码可直接验证效果:

import pandas as pd
data = {
    'Account number': ['1001', '1001', '1002', '1003', '1003', '1004'],
    'Account balance': [1000, 1000, 2000, 3000, 3100, 5000],
    'Account name': ['张三', '李四', '王五', '赵六', '钱七', '张三']
}
df = pd.DataFrame(data)

运行结果:

  • Account indicator列值依次为002、002、001、002、002、001
  • 余额校验输出:余额校验不通过的联合账号:['1003']
  • 多账户识别输出:存在多账户的用户:['张三']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:06:03