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

Pandas创建滚动时间序列面板时报TypeError: object() takes no parameters

问题根因

你的运行环境Pandas版本过高,pd.Panel 作为Pandas早期的三维数据结构,早在0.20版本就被官方标记为弃用,0.25及后续版本已完全移除该类。此时调用pd.Panel()本质是调用不存在的类构造方法,因此触发参数不匹配的报错。

修复方案

无需降级Pandas,直接替换废弃的pd.Panel逻辑即可,你可以用下方的roll函数替换原有代码中的对应函数,输出的分组对象结构和原有逻辑完全一致,后续计算代码不需要做任何改动:

def roll(df, w):
    n_windows = len(df) - w + 1
    window_end_dates = df.index[w-1:]
    stocks = df.columns
    roll_steps = range(w)

    # 拼接所有滚动窗口的数据
    roll_data = np.vstack([df.values[i:i+w, :] for i in range(n_windows)])
    # 构造三级索引匹配原Panel结构
    multi_index = pd.MultiIndex.from_product(
        [window_end_dates, stocks, roll_steps],
        names=["Date", "stock", "roll"]
    )
    # 生成长表结构后转换为对应格式的分组对象
    long_df = pd.DataFrame(roll_data.ravel(), index=multi_index, columns=["value"])
    return long_df["value"].unstack("roll").groupby(level="Date")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:45:03