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

拼接字符串生成FISCAL_YEAR列时类型转换异常求助

解决方法

以下几种方法可以尝试解决你的字符串拼接报错问题:

  • 逐行处理法(适合排查数据问题)
    用apply逐行生成财年字符串,能直观处理每行数据,还能兼容缺失值:

    import pandas as pd
    df['fiscal_year'] = df['year'].apply(lambda x: f"{x}-{x+1}" if pd.notna(x) else None)
    

    如果你的year列存在非数值内容,还可以在lambda里加类型判断,先转成整数再处理:

    df['fiscal_year'] = df['year'].apply(lambda x: f"{int(x)}-{int(x)+1}" if pd.notna(x) and str(x).isdigit() else None)
    
  • 先清洗数据再拼接
    报错大概率是year列的数据类型不统一(比如混了字符串和整数,或者存在缺失值),先统一转成数值类型再处理:

    # 把year列转为数值,无法转换的设为NaN
    df['year'] = pd.to_numeric(df['year'], errors='coerce')
    # 过滤掉NaN后拼接,保留缺失值的位置为NaN
    df['fiscal_year'] = df['year'].dropna().astype(str) + '-' + (df['year'].dropna() + 1).astype(str)
    
  • 使用numpy批量处理
    用numpy的向量化操作提升效率,同时处理缺失值:

    import numpy as np
    # 先确保year是数值类型
    df['year'] = pd.to_numeric(df['year'], errors='coerce')
    df['fiscal_year'] = np.where(pd.notna(df['year']),
                                 df['year'].astype(str) + '-' + (df['year'] + 1).astype(str),
                                 np.nan)
    

另外,建议先检查你的year列数据类型:执行print(df['year'].dtype),如果是object类型,说明列里可能有非整数的内容(比如字符串形式的数字、空值、其他字符),必须先清洗才能正常拼接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:47:51