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

使用Pandas与Schwifty解析IBAN提取银行信息遇类型错误求助

解决方案

由于schwifty.IBAN仅支持处理单个字符串对象,无法直接对DataFrame列进行批量操作,你可以通过pandas.Series.apply()实现逐元素处理,具体步骤如下:

1. 导入所需库

import pandas as pd
import numpy as np
from schwifty import IBAN

2. 定义IBAN解析函数

编写一个函数,接收单个IBAN字符串,返回提取出的银行代码(Bank Keys)和银行账号(Bank Account number),同时处理空值和无效IBAN的情况:

def parse_iban(iban_str):
    if pd.isna(iban_str):
        return (np.nan, np.nan)
    try:
        iban_obj = IBAN(iban_str)
        return (iban_obj.bank_code, iban_obj.account_code)
    except Exception:
        # 若IBAN格式无效,可返回空值或原列值,按需调整
        return (np.nan, np.nan)

3. 批量处理并更新数据

通过apply解析IBAN列,拆分结果后仅覆盖IBAN非空行的对应列:

# 解析所有IBAN值,得到包含银行代码和账号的元组序列
parsed_results = df["IBAN"].apply(parse_iban)

# 生成IBAN非空的掩码
non_empty_iban = df["IBAN"].notna()

# 更新Bank Keys列
df.loc[non_empty_iban, "Bank Keys"] = parsed_results[non_empty_iban].str[0]
# 更新Bank Account number列
df.loc[non_empty_iban, "Bank Account number"] = parsed_results[non_empty_iban].str[1]

注意事项

  • 若你的实际列名是BANKL(对应Bank Keys),请将代码中的列名替换为实际名称。
  • 异常处理部分可根据业务需求调整,比如记录无效IBAN的行索引,或保留原有列值而非返回空值。
  • apply方法相比显式循环更符合pandas的向量化操作逻辑,效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:57:35