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

使用tqdm构建[244,14]特征DataFrame时输出维度为[1,14]如何解决

问题原因

你的代码里rows.append(row_data)的缩进位置错误,被放在了for循环的外部。这就导致程序只会在整个for循环遍历完所有行后,仅把最后一次循环生成的row_data加入列表,最终生成的特征DataFrame自然只有1行。

修复方案

方案1:修正原代码缩进

将rows.append(row_data)调整缩进,放到for循环内部即可,修正后的代码如下:

import pandas as pd
from tqdm import tqdm

rows=[]
for _, row in tqdm(df.iterrows(),total=df.shape[0]):
    row_data=dict(
        week_of_year=row.date.week,
        month=row.date.month,
        NGTC=row.NGTC,
        NGRRO=row.NGRRO,
        CSP=row.CSP,
        NGMP=row.NGMP,
        NGPI=row.NGPI,
        NGUSV=row.NGUSV,
        HOSP=row.HOSP,
        HDD=row.HDD,
        CDD=row.CDD,
        NGSP=row.NGSP,
        pre_NGSP=row.pre_NGSP,
        change_NGSP=row.change_NGSP
    )
    rows.append(row_data)

# 生成特征DataFrame
features_df = pd.DataFrame(rows)

运行后features_df.shape就会是你预期的(244,14)。

方案2:更高效的向量化实现(推荐)

iterrows遍历的效率很低,对于你的需求完全可以用pandas原生的向量化操作实现,无需循环,代码更简洁运行速度也更快:

features_df = pd.DataFrame({
    "week_of_year": df["date"].dt.week,
    "month": df["date"].dt.month,
    "NGTC": df["NGTC"],
    "NGRRO": df["NGRRO"],
    "CSP": df["CSP"],
    "NGMP": df["NGMP"],
    "NGPI": df["NGPI"],
    "NGUSV": df["NGUSV"],
    "HOSP": df["HOSP"],
    "HDD": df["HDD"],
    "CDD": df["CDD"],
    "NGSP": df["NGSP"],
    "pre_NGSP": df["pre_NGSP"],
    "change_NGSP": df["change_NGSP"]
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:15:10