You need to enable JavaScript to run this app. Pandas字符串处理报错:调用str.upper时PandasArray无_str_upper属性
优惠活动
大模型
产品
解决方案
定价
更多

Pandas字符串处理报错:调用str.upper时PandasArray无_str_upper属性

本地pandas字符串操作触发属性缺失报错

问题复现

运行以下最简示例代码即可稳定复现错误:

import pandas as pd

names = ["first name", "second name", "third name"]
numbers = [1,2,3]
data = {
    "name": names,
    "number": numbers
}

df = pd.DataFrame(data)

print(df["name"].str.upper())

程序运行时抛出完整堆栈:

Traceback (most recent call last):
  File "C:/Python/Udemy/pandas/main.py", line 12, in <module>
    print(df["name"].str.upper())
  File "C:\Users\saxal\AppData\Local\r-miniconda\lib\site-packages\pandas\core\strings\accessor.py", line 101, in wrapper
    return func(self, *args, **kwargs)
  File "C:\Users\saxal\AppData\Local\r-miniconda\lib\site-packages\pandas\core\strings\accessor.py", line 2686, in upper
    result = self._array._str_upper()
AttributeError: 'PandasArray' object has no attribute '_str_upper'

已排查信息

  • 已反复切换安装不同版本的numpy、pandas,本地问题始终未解决
  • 完全相同的代码上传到repl.it等在线运行平台,可正常输出预期的大写字符串列结果
  • 当前本地环境使用的依赖版本为:pandas 1.2.0、numpy 1.19.5
  • 运行环境为r-miniconda预装的Python解释器

问题根因与解决方向

  • 该报错属于pandas 1.2.0版本的已知兼容缺陷:内置字符串访问器在调用核心处理方法时,未将_str_upper等字符串操作方法正确绑定到PandasArray类对象上,尤其在r-miniconda这类预装了基础依赖的打包环境中,容易出现新旧版本pandas文件交叉覆盖、残留缓存的问题——就算反复执行安装命令切换版本,只要旧的源码残留在site-packages目录里,就会持续触发这个属性缺失的报错。
  • 具体修复步骤:
    1. 先彻底卸载当前环境的pandas,执行命令:
      pip uninstall pandas -y
      
    2. 卸载完成后,手动打开Python对应的site-packages目录,确认删除所有残留的pandas相关文件夹,包括pandas源码目录、pandas-*.dist-info版本信息目录,避免旧文件干扰新安装的包。
    3. 安装和numpy 1.19.5兼容性最优的稳定pandas版本1.3.5,执行安装命令:
      pip install pandas==1.3.5
      
  • 临时绕过方案(如果不想更换pandas版本):
    不使用pandas自带的.str访问器,改用列表推导式直接对列内的原生字符串做大写转换,写法如下:
    # 替代 df["name"].str.upper()
    df["name"] = [item.upper() for item in df["name"]]
    print(df["name"])
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.10 10:54:05