假设我有一个 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 中带边框的表格一样的输出。 这是我的预期输出看起来像......
有什么办法可以做到吗???
这可能就是您正在寻找的。
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)