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

Pandas DataFrame如何将带编号的指定列拆分为长格式行

实现方案

直接使用Pandas原生的melt方法即可高效完成宽表转长表需求,该方法为向量化运算,针对你提到的数千行数据、上百个非目标列的场景性能完全足够,不需要额外写循环逻辑。

步骤1:筛选所有待拆分的带编号列

直接复用你现有的列名筛选逻辑即可,示例中匹配V开头的列,业务场景可替换为匹配包含Test Voltage的列:

# 示例筛选规则,可替换为实际业务的列名匹配逻辑
value_cols = [col for col in df.columns if col.startswith('V')]
# 业务场景使用的筛选规则:
# value_cols = [col for col in df.columns if 'Test Voltage' in col]

步骤2:确定不需要拆分的保留列

不需要手动逐个指定列,直接排除待拆分列即可,适配上百个非编号列的场景:

id_cols = [col for col in df.columns if col not in value_cols]

步骤3:执行宽转长操作

df_long = pd.melt(
    df,
    id_vars=id_cols,
    value_vars=value_cols,
    var_name='V Number', # 存储原列名的新增列
    value_name='V' # 存储原列取值的新增列
)

# 可选操作:如果需要单独提取编号数字(比如把V1转为数字1),可补充以下逻辑
df_long['V Number'] = df_long['V Number'].str.extract(r'(\d+)').astype(int)

转换后原有的A、B、X等非编号列的取值会自动映射到拆分后的对应行,你的示例数据转换后会从5行变为15行,完全符合需求,数千行规模的转换耗时在毫秒级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:36:04