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

pd.wide_to_long宽表转长表参数配置报错问题排查

错误原因

代码参数配置存在两个核心问题,直接触发报错:

  • j参数传值错误:pd.wide_to_long的j参数仅接受字符串输入,作用是为宽表列名中提取出的后缀部分(即本场景下的日期)指定转换后的列名,不能直接传入存储日期的mydates列表或DataFrame,这是抛出两类报错的直接原因。
  • suffix正则规则不匹配:你自定义的r'\w+'无法匹配日期字符串中的-符号,会导致函数无法识别列名里的日期段,匹配逻辑失效。
修正后的实现代码

不需要提前传入日期列表,函数会自动扫描所有符合命名规则的列完成拆分,代码如下:

df_long = pd.wide_to_long(
    df_wide,
    stubnames = ['xx','yyy','z'],
    i='id',
    j='date', # 仅需指定提取出的日期列的列名即可
    sep='_',
    suffix=r'[0-9a-zA-Z-]+' # 正则匹配含横杠的日期格式,如04-Feb-94
).reset_index()

# 可选:将date列转为标准日期格式
df_long['date'] = pd.to_datetime(df_long['date'], format='%d-%b-%y')

# 可选:如果需要仅保留mydates列表内的日期,转换完成后筛选即可
df_long = df_long[df_long['date'].isin(mydates)]
补充说明
  • 转换完成后输出的结构正好是id、date、xx、yyy、z五列,每个id对应每个日期生成一条记录,符合需求。
  • 不需要手动传入全量日期列表,函数会自动识别所有符合指标名_日期格式的列完成转换,超过100个日期的场景下也能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 05:36:35