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

Pandas去除列名后缀并执行unpivot操作的简便实现方法查询

解决方案

你可以直接用 pandas 内置的 pd.wide_to_long() 函数实现需求,不需要手动拆分拼接,代码更简洁高效:

import pandas as pd

# 构造示例数据
data = {'Year_x': [1993, 1994, 1995, 1996], 
       'Year_y': [2000, 2001, 2002, 2003],
       'Item_x':['A','B','C','D'],
       'Item_y':['E','F','G','H'],
       '$':[3,4,5,6]}
df = pd.DataFrame.from_dict(data)

# 核心转换代码
res = pd.wide_to_long(df, 
                      stubnames=['Year', 'Item'], 
                      i='$', 
                      sep='_', 
                      suffix='.+')\
         .reset_index()[['Year', 'Item', '$']]

运行后得到的res就是你需要的目标表结构。

参数说明

  • stubnames:指定需要提取的列名前缀,这里就是你要最终保留的Year和Item
  • i:指定宽表里不需要拆分的公共列,这里是不变的$列;如果实际数据中$列存在重复值,可修改为i=[df.index, '$']避免索引重复报错
  • sep:指定列名前缀和后缀的分隔符,你的列名用的是下划线分隔,所以填_
  • suffix:指定后缀的匹配规则,这里填.+匹配任意后缀字符

如果习惯用melt也可以实现,但代码量会比wide_to_long多,处理这种同前缀带后缀的宽转长场景,wide_to_long是最优解。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 12:36:10