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

Pandas for循环拼接迭代结果仅输出最后一次值如何解决

问题根因
  • 缩进错误:总表拼接逻辑写在for循环外部,循环执行过程中每次迭代都会覆盖重写单ticker结果变量df_con,循环结束后该变量仅保留最后一个标的的计算值,最终拼接自然只输出最后一个ticker的结果。
  • 结构逻辑错误:预期输出为每列对应1个ticker、共3行对应三个指标,但原有代码生成单ticker结果时统一用0作为行索引,且拼接方向和结构不匹配列对齐的要求,即使修正缩进也会出现行索引混乱、数据错位的问题。
修正后代码
import pandas as pd
import statsmodels.formula.api as smf

def regression_stats():
    # 初始化总表,提前设置3行对应的指标名作为行索引
    total_df = pd.DataFrame(index=['beta', 'alpha', 'std_error'])

    for t in tickers:
        model = smf.ols(f'{t} ~ SP50', data=df1).fit()
        beta = model.params['SP50']
        alpha = model.params['Intercept']
        std_error = model.bse['Intercept']
        
        # 直接给当前ticker赋值整列数据,无需循环内反复拼接
        total_df[t] = [beta, alpha, std_error]

    # 如需导出文件放开下方注释即可
    # total_df.to_csv('source/data/sp_regression.csv')
    print(total_df)
    return total_df
优化说明
  • 提前初始化总表时直接设置三行的索引为beta/alpha/std_error,和三类指标一一对应,从根源避免索引错位
  • 移除循环内反复创建临时DataFrame、多次无效拼接的冗余逻辑,每次循环直接给总表新增一列,列名为当前ticker,列值按行索引顺序填入三个计算结果,运行效率远高于循环内反复concat的写法
  • 所有ticker的计算结果都会在循环内写入总表,最终输出结构完全匹配预期:共500列对应500个股票代码,3行依次为beta、alpha、标准误指标值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:15:36