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

如何为Pandas DataFrame生成无间隙边框表格(无库/样式器)

解决Pandas DataFrame打印无缝边框表格的问题

原始DataFrame定义

import pandas as pd

data = {'Col1': [20, 15, 10, 5, 20, 17], 'Col2': [11, 6, 3, 16, 21, 8], 'Col3': [2, 17, 12, 7, 22, 9],'Col4': [3, 8, 13, 18, 3, 23], 'Col5': [4, 19, 8, 11, 6, 20]}
df = pd.DataFrame(data)

问题描述

需要在不借助额外库或df.style的前提下,打印出带无缝单元格边框的表格,原自定义bordergen函数生成的线条存在间隙,无法形成完整框体,如何修改实现无缝边框?

解决方案

核心是统一分隔线与内容行的对齐逻辑,确保列交叉点的+与内容行的|精准对应,消除间隙。以下是修改后的完整实现:

def print_bordered_df(df):
    # 计算每列的最大宽度:覆盖列名和所有单元格内容的长度
    col_widths = []
    for col in df.columns:
        col_name_len = len(str(col))
        max_val_len = max(len(str(val)) for val in df[col])
        col_widths.append(max(col_name_len, max_val_len))
    
    # 生成横向分隔线:+----+----+...+ 格式
    def make_sep_line():
        parts = ['+' + '-'*(width + 2) for width in col_widths]
        return ''.join(parts) + '+'
    
    # 生成内容行:| 内容 | 内容 |...| 格式
    def make_row_line(values):
        parts = []
        for val, width in zip(values, col_widths):
            # 左对齐显示,可改为居中:f'{val:^{width}}'
            parts.append(f'| {str(val):<{width}} ')
        return ''.join(parts) + '|'
    
    # 按顺序打印表格
    sep_line = make_sep_line()
    print(sep_line)
    print(make_row_line(df.columns))
    print(sep_line)
    for _, row in df.iterrows():
        print(make_row_line(row.values))
    print(sep_line)

# 调用函数打印带边框的表格
print_bordered_df(df)

关键逻辑说明

  1. 列宽度计算:确保每列宽度足够容纳最长的内容(列名或单元格值),避免内容溢出导致边框错位。
  2. 分隔线生成:用+作为列交叉点,每个列对应的横线长度为列宽度 + 2(左右各留一个空格),保证分隔线与内容行的|完全对齐。
  3. 内容行格式化:每个单元格内容左右留空格,用|包裹,与分隔线的+位置一一对应,形成完整的单元格边框。

打印效果

+-------+-------+-------+-------+-------+
| Col1  | Col2  | Col3  | Col4  | Col5  |
+-------+-------+-------+-------+-------+
| 20    | 11    | 2     | 3     | 4     |
| 15    | 6     | 17    | 8     | 19    |
| 10    | 3     | 12    | 13    | 8     |
| 5     | 16    | 7     | 18    | 11    |
| 20    | 21    | 22    | 3     | 6     |
| 17    | 8     | 9     | 23    | 20    |
+-------+-------+-------+-------+-------+

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 12:43:11