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

Python中使用pd.melt按行名列名转换协方差表为熔融格式

协方差矩阵转熔融格式实现方案

使用pd.melt()即可实现需求,只需提前将行索引转为普通列即可完成行列名的绑定。

完整操作代码

import pandas as pd

# 构造示例协方差矩阵
cov_df = pd.DataFrame(
    [[1, 0.6, 0.5],
     [0.6, 1, 0.3],
     [0.5, 0.3, 1]],
    index=["AAPL", "COM", "TTD"],
    columns=["AAPL", "COM", "TTD"]
)

# 1. 将行索引转为普通列,命名为stock1
cov_df = cov_df.reset_index(names="stock1")

# 2. 调用melt完成转换
melted_cov = pd.melt(
    cov_df,
    id_vars="stock1",  # 保留stock1作为第一维度标识
    var_name="stock2", # 原列名转为第二维度列
    value_name="cov"   # 原数值转为协方差值列
)

输出效果

如果需要和你示例一致的无表头、无索引的输出格式,执行以下代码即可:

print(melted_cov.to_string(index=False, header=False))

输出结果:

AAPL AAPL  1.0
AAPL  COM  0.6
AAPL  TTD  0.5
 COM AAPL  0.6
 COM  COM  1.0
 COM  TTD  0.3
 TTD AAPL  0.5
 TTD  COM  0.3
 TTD  TTD  1.0

注:你示例中出现的COMM、TDD属于笔误,实际输出为正确的股票代码

核心逻辑说明

  • pd.melt默认仅处理DataFrame的普通列,行索引不会被自动纳入转换逻辑,因此需要先通过reset_index()把行名转成普通列
  • id_vars参数用于指定转换过程中保留不动的列,这里保留行名转来的第一维度股票代码
  • var_name、value_name分别指定原列名、原数值转换后的列名,可按需修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:27:03