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

如何在Pandas DataFrame中实现文本级而非单元格级的彩色打印?

实现Pandas DataFrame单元格内文本级彩色显示的方法

可行,核心是利用ANSI转义序列给单个字符添加颜色标记,Pandas打印时会保留这些标记(终端支持ANSI的话就能渲染出不同颜色)。以下是具体实现步骤:

1. 定义颜色映射与着色函数

先设定需要的颜色对应的ANSI转义码,再写一个函数遍历字符串的每个字符,给指定字符套上对应颜色的转义标记:

import pandas as pd

# 定义ANSI颜色转义码(终端通用)
COLOR_MAP = {
    'a': '\033[91m',  # 亮红色
    'b': '\033[94m',  # 亮蓝色
    'c': '\033[92m',  # 亮绿色
    'reset': '\033[0m'  # 重置为默认颜色
}

def colorize_single_chars(text):
    colored_parts = []
    for char in text:
        # 匹配字符对应的颜色,无匹配则用默认
        color_code = COLOR_MAP.get(char, COLOR_MAP['reset'])
        colored_parts.append(f"{color_code}{char}{COLOR_MAP['reset']}")
    return ''.join(colored_parts)

2. 应用到DataFrame并打印

将着色函数应用到目标列,然后打印DataFrame即可:

# 构造示例DataFrame
df = pd.DataFrame({
    '示例列1': ['abc', 'bac', 'cab'],
    '示例列2': ['aab', 'bbc', 'ccc']
})

# 对列中的每个字符串应用着色
df['示例列1'] = df['示例列1'].apply(colorize_single_chars)
df['示例列2'] = df['示例列2'].apply(colorize_single_chars)

# 打印时用to_string避免截断,index=False隐藏索引
print(df.to_string(index=False))

注意事项

  • 终端兼容性:仅支持能解析ANSI转义码的终端(比如Linux/macOS终端、Windows Terminal;旧版CMD需开启ANSI支持)
  • Jupyter环境:如果在Jupyter Notebook/Lab中,用display(df)替代print,Jupyter默认支持ANSI渲染
  • 导出问题:这种方式是给文本添加了转义字符,导出为CSV/Excel时这些标记会被当作普通文本,若需纯净数据需提前去除转义码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 07:57:20