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

Pandas将DataFrame每行转为对角矩阵并拼接为多级索引DataFrame的方法

解决方案

你原有逻辑的问题是 apply 沿行处理时,会把每行返回的DataFrame作为单个元素存入结果Series,不会自动拼接为多级索引结构,改用pd.concat手动拼接即可。

完整可运行代码

import pandas as pd
import numpy as np

# 构造输入数据
data = pd.DataFrame(
    [[1,2,3],[4,5,6]], 
    columns=['a', 'b', 'c'], 
    index=pd.date_range('2021-11-06', '2021-11-07')
) 

def convert_dataframe(ser):
    df_ser = pd.DataFrame(0, index=ser.index, columns=ser.index)
    np.fill_diagonal(df_ser.values, ser)
    return df_ser

# 拼接生成多级索引结果
result = pd.concat(
    {date: convert_dataframe(row) for date, row in data.iterrows()},
    names=['Date']
)

输出结果

a  b  c
Date                      
2021-11-06 a  1  0  0
           b  0  2  0
           c  0  0  3
2021-11-07 a  4  0  0
           b  0  5  0
           c  0  0  6

如果需要浮点类型数值,把convert_dataframe里的0改成0.0即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:15:03