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

如何使Python的Pandas DataFrame单元格以二维矩阵格式显示

DataFrame单元格矩阵格式化实现方案

如果从Matlab导入的矩阵为mlarray特殊类型,仅需在格式化函数开头将其转为numpy数组即可兼容。

前置模拟测试代码

import pandas as pd
import numpy as np

# 模拟Matlab导入的矩阵存储结构
df = pd.DataFrame({
    "分组": ["实验组", "对照组"],
    "结果矩阵": [
        np.array([[1.23, 4.56, 7.89], [10.11, 12.13, 14.15]]),
        np.array([[9.87, 6.54, 3.21], [15.14, 13.12, 11.1]])
    ]
})

1. 纯文本打印场景

核心逻辑是将矩阵转为带大括号、元素对齐的多行字符串,适配控制台打印场景:

def format_matrix_to_str(mat):
    # 兼容Matlab导入的mlarray类型
    if not hasattr(mat, "__iter__") or isinstance(mat, str):
        return mat
    mat = np.array(mat)
    # 统一元素宽度对齐
    rows = []
    for row in mat:
        row_str = " ".join([f"{val:>8.2f}" for val in row])
        rows.append(f"  {row_str}  ")
    max_row_len = max(len(r) for r in rows)
    # 添加矩阵括号
    output = [f"⎡{rows[0].center(max_row_len)}⎤"]
    for r in rows[1:-1]:
        output.append(f"⎢{r.center(max_row_len)}⎥")
    output.append(f"⎣{rows[-1].center(max_row_len)}⎦")
    return "\n".join(output)

# 应用格式化到指定列
df_text = df.copy()
df_text["结果矩阵"] = df_text["结果矩阵"].apply(format_matrix_to_str)

# 打印输出,调整列宽适配矩阵
print(df_text.to_string(justify="left", col_space=40))

2. Jupyter交互环境渲染场景

核心逻辑是注册HTML格式化器,用网页样式模拟矩阵排版,实现可视化对齐效果:

import pandas as pd
from IPython.display import HTML

def format_matrix_to_html(mat):
    if not hasattr(mat, "__iter__") or isinstance(mat, str):
        return str(mat)
    mat = np.array(mat)
    # 用HTML表格+括号样式模拟矩阵
    html_content = """
    <div style="display: inline-flex; align-items: center;">
        <span style="font-size: 2em; line-height: 1; margin-right: 2px;">[</span>
        <table style="border-collapse: collapse; margin: 0 4px;">
    """
    for row in mat:
        html_content += "<tr>"
        for val in row:
            html_content += f"<td style='padding: 3px 6px; text-align: right;'>{val:.2f}</td>"
        html_content += "</tr>"
    html_content += """
        </table>
        <span style="font-size: 2em; line-height: 1; margin-left: 2px;">]</span>
    </div>
    """
    return html_content

# 直接渲染格式化后的DataFrame
pd.set_option("display.max_colwidth", None)
df.style.format({"结果矩阵": format_matrix_to_html})

如果需要导出LaTeX格式的表格,可直接使用numpy的LaTeX格式化能力:将格式化函数中的返回值替换为np.array2string(mat, style='latex')即可。

内容的提问来源于stack exchange,提问作者Mohammad Badri Ahmadi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:18:02