在行和列之间插入线条(网格线/单元格边框),使其看起来像没有任何库/样式器的表格

问题描述 投票:0回答:1

假设我有一个 DataFrame...

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)

现在我想通过简单地在行和列之间插入行(网格线/单元格边框)来以表格格式打印此 DataFrame,而不使用任何库或样式器来获得像 Excel 中带边框的表格一样的输出。 这是我的预期输出看起来像......

有什么办法可以做到吗???

python dataframe border
1个回答
0
投票

这可能就是您正在寻找的。

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)

# The code you wanted
def bordergen(df):
    col_widths = [max(len(str(col)), max(df[col].astype(str).str.len())) for col in df.columns]
    header = '+'.join(['-' * (width + 2) for width in col_widths])

    print(header)
    for col in df.columns:
        print(f'| {col:<{col_widths[df.columns.get_loc(col)]}} ', end='')
    print('|')
    print(header)

    for _, row in df.iterrows():
        for col in df.columns:
            print(f'| {row[col]:<{col_widths[df.columns.get_loc(col)]}} ', end='')
        print('|')
        print(header)

bordergen(df)
© www.soinside.com 2019 - 2024. All rights reserved.