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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:07:42