Python类开发:如何避免处理pandas DataFrame时重复写子集代码?
嗨,作为Python类设计新手遇到这种重复代码的问题太正常啦!咱们可以把重复的子集筛选逻辑抽成一个私有辅助方法,这样所有需要用到这个子集的方法都直接调用它就行,彻底告别冗余代码~
优化后的类实现示例
import pandas as pd class Summary(object): def __init__(self, df): self.df = df # 将传入的DataFrame保存为实例属性,方便所有方法直接访问 def _get_target_subset(self, column_number): """私有辅助方法:根据列号生成指定的2列2行子集(行号逻辑可按需调整)""" # 这里替换成你实际的行号确定规则,比如行号和列号的对应关系 row_indices = [column_number, column_number + 1] column_indices = [column_number, column_number + 1] # 返回筛选好的子集 return self.df.iloc[row_indices, column_indices] def calculate_mean(self, column_number): subset = self._get_target_subset(column_number) # 这里写该方法的业务逻辑,比如计算子集的均值 return subset.mean().round(2) def find_max_value(self, column_number): subset = self._get_target_subset(column_number) # 这里写该方法的业务逻辑,比如找子集的最大值 return subset.max().max()
为什么这么做?
- 消除冗余:把重复的筛选逻辑集中在一个方法里,不用在每个业务方法里重复写
iloc或者其他筛选代码 - 易维护:如果之后子集的规则变了(比如要改成3行2列、或者行号的计算逻辑调整),只需要修改
_get_target_subset这一个地方,所有依赖它的方法都会自动更新 - 代码清晰:私有方法(单下划线开头的命名)是Python里约定俗成的“内部工具方法”,能明确区分对外暴露的业务方法和内部复用的逻辑
你只需要把_get_target_subset里的行号、列号筛选逻辑替换成你实际的规则,然后在各个业务方法里直接调用它就行啦!
内容的提问来源于stack exchange,提问作者bluetooth
相关产品推荐
相关产品推荐

