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

如何通过循环结合f-string调用DataFrame方法?代码传参问题咨询

修复Python函数参数传递与动态方法调用问题

你遇到的问题主要有两个核心点:一是test_run函数调用get_stat时没传递stat参数,二是动态调用pandas统计方法的写法有误(.f"{stat}"()这种语法在Python里是无效的)。咱们一步步来修正:

第一步:修正动态调用pandas方法的写法

要根据字符串动态调用pandas Series的方法(比如max()、min()、mean()),不能直接把字符串拼在点后面,应该用getattr()函数来获取对应方法对象,再执行调用:

def get_stat(symbol, stat):
    df = pd.read_csv(f"{symbol}.csv")
    # 用getattr获取指定的统计方法,然后执行调用
    return getattr(df['close'], stat)()

第二步:在test_run中传递stat参数

原来的get_stat(symbol)缺少了stat参数,补上之后才能让get_stat知道当前要计算哪种统计值:

def test_run():
    for symbol in ['nugt', 'soxs']:
        for stat in ['max','min', 'mean']:
            print(f"{stat} Close")
            # 把循环中的stat参数传递给get_stat
            print(symbol, get_stat(symbol, stat))

完整修正后的代码

import pandas as pd

def get_stat(symbol, stat):
    df = pd.read_csv(f"{symbol}.csv")
    # 通过getattr动态获取并调用统计方法
    return getattr(df['close'], stat)()

def test_run():
    for symbol in ['nugt', 'soxs']:
        for stat in ['max','min', 'mean']:
            print(f"{stat} Close")
            # 传入stat参数
            print(symbol, get_stat(symbol, stat))

if __name__ == "__main__":
    test_run()

改动说明

  • getattr(obj, method_name)是Python动态获取对象属性/方法的标准方式,它能根据字符串method_name拿到对象obj对应的方法,完美适配咱们需要动态切换统计方法的场景,比字符串拼接写法更规范安全。
  • 补上stat参数后,循环里的统计方法名能准确传递给get_stat,输出顺序和内容就完全符合你的预期了。

运行这段代码后,就会按照你想要的格式,依次输出两只股票的最大、最小、平均收盘价啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:30:35