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

单元测试类方法时出现pandas模块无dataframe属性报错如何解决

报错解决方案

直接原因

你收到的AttributeError: module 'pandas' has no attribute 'dataframe'由拼写大小写错误导致:pandas 官方提供的二维表结构类名是首字母大写的DataFrame,不是全小写的dataframe。

同时你原有代码里的CSV读取逻辑、类属性/方法定义也存在问题,就算修正大小写也会继续报错,完整修正逻辑如下:

修正点说明

  1. 替换pd.dataframe为正确的pd.read_csv方法:pandas内置了读取CSV文件的专用方法,不需要手动调用open打开文件,直接传入CSV文件路径即可生成对应DataFrame
  2. 构造函数中补充公司名称、地址的属性存储逻辑,原有代码没有把传入的名称、地址存为实例属性,后续读写都会失败
  3. 补充缺失的getName/setName/getAddr/setAddr方法,以及自定义打印需要的__str__方法

修正后可运行代码

import pandas as pd

class CompanySales:
    def __init__(self, CompanyName, CompanyAddress, CSV):
        # 存储基础属性
        self._name = CompanyName
        self._address = CompanyAddress
        # 读取CSV生成DataFrame
        self._dataframe = pd.read_csv(CSV)
    
    # 补充名称读写方法
    def getName(self):
        return self._name
    
    def setName(self, new_name):
        self._name = new_name
    
    # 补充地址读写方法
    def getAddr(self):
        return self._address
    
    def setAddr(self, new_addr):
        self._address = new_addr
    
    # 补充自定义打印逻辑
    def __str__(self):
        return f"CompanySales(名称:{self._name},地址:{self._address},数据行数:{len(self._dataframe)})"

if __name__=="__main__":
    Sales = CompanySales("ABC","3 River St. N.Y.,N.Y.", "CompanySalesData.csv")
    print(Sales)
    Sales.setName("Dallas Store")
    Sales.setAddr("2929 First St., Dallas,Tx.")
    print ("Company Name was changed to")
    print (Sales.getName())
    print ("Company Address was changed to")
    print (Sales.getAddr())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:15:00