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

如何在pandas中更高效地将多列宽表DataFrame转换为指定三列结构的长表?

优化方案:pandas内置宽表转长表实现

你原有代码性能差的核心原因是嵌套循环+逐次调用pd.concat,每次拼接都会生成全新的DataFrame对象,内存和时间开销都极高。pandas内置的melt函数就是专门用来完成宽表转长表的需求,完全匹配你的转换规则,性能是原生循环实现的百倍以上。

优化后代码

def getUtilizationForDatabase(self, df):
    return pd.melt(
        df,
        id_vars=["Wertstrom"],  # 指定保持不变的标识列
        var_name="MaGr",        # 原有非标识列的列名会转换为MaGr列的取值
        value_name="Auslastung" # 原有单元格的数值会转换为Auslastung列的取值
    )

效果说明

  • 输入规则完全兼容原有逻辑:支持首列为Wertstrom、其余列为M100、M200等MaGr类字段的输入表
  • 输出结构和原有函数返回结果完全一致,无需额外调整即可直接写入关系型数据库
  • 针对你提到的60行×120列的输入规模,该实现运行耗时通常在1ms以内,性能远高于原生循环实现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:09:03