如何让Python类的MissingData方法复用readData的输出DataFrame?
同一类中方法间输出复用的实现方案
你的代码存在两个核心问题:一是MissingData方法不符合类方法的定义规则(缺少self参数),二是没有建立和readData方法的关联。下面提供两种可行的解决思路:
方案一:在MissingData中直接调用readData
直接在MissingData方法内部调用self.readData()获取DataFrame,适合数据量小、不需要多次复用数据的场景:
import pandas as pd class DATAA(): def __init__(self, dataset, name, path=None): self.dataset = dataset self.name = name self.path = path def readData(self): outputdf = pd.read_csv(self.dataset, sep=',') return outputdf def MissingData(self): # 调用类内的readData方法获取DataFrame outputdf = self.readData() # 修复原代码错误:isna是方法,需要加括号调用 Missing_values = outputdf.isna().sum() return Missing_values # 使用示例 df = DATAA(dataset="your_data.csv", name="test_data") missing_result = df.MissingData() print(missing_result)
方案二:将DataFrame存为实例属性(推荐)
如果需要多次复用读取后的DataFrame,避免重复读取文件,建议在readData中将DataFrame赋值给实例属性self.df,后续所有方法直接使用这个属性:
import pandas as pd class DATAA(): def __init__(self, dataset, name, path=None): self.dataset = dataset self.name = name self.path = path # 初始化实例属性,存储读取后的DataFrame self.df = None def readData(self): self.df = pd.read_csv(self.dataset, sep=',') return self.df def MissingData(self): # 若未读取数据,自动调用readData加载 if self.df is None: self.readData() Missing_values = self.df.isna().sum() return Missing_values # 使用示例 df = DATAA(dataset="your_data.csv", name="test_data") # 可先预加载数据,后续方法直接复用 df.readData() missing_result = df.MissingData() # 也可直接调用MissingData,内部会自动判断是否需要加载数据 # missing_result = df.MissingData() print(missing_result)
关键修改说明
- 所有类的实例方法必须以
self作为第一个参数,才能访问类的实例属性和其他方法 - 方案二中将DataFrame存为实例属性,避免重复IO操作,提升运行效率
- 修正了原代码
isna.sum()的语法错误,isna是DataFrame的方法,需加括号调用
内容的提问来源于stack exchange,提问作者JASS
相关产品推荐
相关产品推荐

