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

如何在Pandas DataFrame列中为特定文本(非整列)着色?

如何在Pandas DataFrame中为特定文本着色(而非整个单元格)

你的现有代码会将包含目标单词的整个单元格设为蓝色,要实现仅高亮特定单词,需要分两种场景处理:Jupyter Notebook中的显示,以及导出到Excel文件。

场景1:在Jupyter Notebook中高亮特定文本

通过将目标单词用HTML标签包裹,并让Pandas Styler渲染HTML内容,就能实现局部文本着色:

import pandas as pd

# 创建示例DataFrame
data = {
    'sentence': [
        'sample sentence.',
        'sample sentence 2',
        'tewxt text text',
    ]
}
df = pd.DataFrame(data)

# 定义函数:将"sample"单词用蓝色HTML标签包裹
def highlight_specific_word(text):
    target_word = 'sample'
    if target_word in text:
        return text.replace(target_word, f'<span style="color:blue;font-weight:bold;">{target_word}</span>')
    return text

# 应用格式化,关闭HTML转义以生效
df_styled = df.style.format(highlight_specific_word, subset=['sentence']).set_properties(**{'text-align': 'left'})

# 显示结果
df_styled

这段代码会把每个单元格里的"sample"单词单独染成蓝色(额外添加了加粗效果增强辨识度),其他文本保持默认样式。

场景2:导出到Excel时高亮特定文本

Excel不支持HTML格式,需要借助openpyxl库的富文本(RichText)功能来实现局部着色:

import pandas as pd
from openpyxl import Workbook
from openpyxl.styles import Font
from openpyxl.utils.dataframe import dataframe_to_rows
from openpyxl.cell.text import InlinePattern

# 创建示例DataFrame
data = {
    'sentence': [
        'sample sentence.',
        'sample sentence 2',
        'tewxt text text',
    ]
}
df = pd.DataFrame(data)

# 创建Excel工作簿和工作表
wb = Workbook()
ws = wb.active

# 将DataFrame内容写入工作表(先写表头)
for r in dataframe_to_rows(df, index=False, header=True):
    ws.append(r)

# 定义蓝色字体样式
blue_font = Font(color="0000FF")

# 遍历目标列(这里是第1列,表头为第1行,数据从第2行开始)
for row in ws.iter_rows(min_row=2, min_col=1, max_col=1):
    cell = row[0]
    text = cell.value
    if not text:
        continue
    target_word = 'sample'
    # 拆分文本,构建富文本内容
    parts = text.split(target_word)
    rich_text = []
    for i, part in enumerate(parts):
        if part:
            rich_text.append(part)
        if i < len(parts)-1:
            # 添加带蓝色字体的目标单词
            rich_text.append(InlinePattern(target_word, font=blue_font))
    # 设置单元格的富文本值
    cell.value = rich_text

# 保存Excel文件
wb.save('output_highlighted.xlsx')

这段代码会在导出的Excel文件中,仅将"sample"单词染成蓝色,其余文本保持默认样式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 09:02:13