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

如何在打印表格中嵌入文本汇总?基于Pandas DataFrame实现

问题:如何按指定格式垂直打印两个结构不同的Pandas DataFrame?

我有两个结构不同的Pandas DataFrame:

import pandas as pd

data1 = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'Height': [165, 182, 177]
}
df1 = pd.DataFrame(data1)

data2 = {
    'Summary': ["Alice is the youngest", "Bob is the tallest"]
}
df2 = pd.DataFrame(data2)

我希望将它们按以下格式垂直打印,保留各自的列结构,而非合并所有列到顶部:

+---+---------+-----+----------+
|   |   Name  | Age |  Height  |
+---+---------+-----+----------+
| 0 |  Alice  |  25 |    165   |
| 1 |   Bob   |  30 |    182   |
| 2 | Charlie |  35 |    177   |
+---+---------+-----+----------+
|   |          Summary         |
+---+--------------------------+
| 0 | "Alice is the youngest"  |
| 1 |   "Bob is the tallest"   |
+---+--------------------------+

目前尝试的方法均会合并列,无法实现上述效果。


解决方案

由于两个DataFrame列结构完全不同,pd.concat这类拼接方法会强制合并列(缺失值填充NaN),不符合需求。要实现目标打印效果,核心思路是分别打印两个DataFrame,以下是几种可行方法:

方法1:直接分别打印(最简方案)

无需额外依赖,直接打印两个DataFrame,可添加分隔线优化视觉效果:

import pandas as pd

# 定义DataFrame(省略重复代码)
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# 打印第一个DataFrame
print(df1.to_string(index=True))
# 打印分隔线
print("-" * 50)
# 打印第二个DataFrame
print(df2.to_string(index=True))

方法2:用tabulate库生成网格样式表格

如果需要和示例完全一致的网格风格,可使用tabulate库:

  1. 先安装库:
pip install tabulate
  1. 编写代码:
from tabulate import tabulate
import pandas as pd

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# 格式化打印第一个DataFrame
print(tabulate(df1, headers='keys', tablefmt='grid', showindex=True))
# 可选:添加分隔线
print("+" + "-"*30 + "+")
# 格式化打印第二个DataFrame
print(tabulate(df2, headers='keys', tablefmt='grid', showindex=True))

该代码会输出和示例几乎一致的带边框表格。

方法3:手动定制输出(无依赖)

如果不想用第三方库,可手动处理字符串输出,自动匹配分隔线长度:

import pandas as pd

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# 获取两个DataFrame的字符串格式
df1_str = df1.to_string(index=True)
df2_str = df2.to_string(index=True)

# 计算最长行长度,生成匹配的分隔线
max_line_len = max(len(line) for line in df1_str.split("\n"))
separator = "-" * max_line_len

# 拼接打印
print(df1_str)
print(f"\n{separator}\n")
print(df2_str)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:17:35