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
相关产品推荐
相关产品推荐

