如何使用Pandas Style为df1中含df3字符串的文本设置字体颜色?
实现Pandas DataFrame指定文本的字体颜色高亮
我来帮你搞定这个需求——给df1列中包含df3里指定字符串的文本设置字体颜色。下面是完整的可运行代码,以及关键步骤的解释:
完整代码示例
import pandas as pd # 初始化你的数据集 df1 = [ "i like to shop at store a." , "he likes to shop at the store b.", "she is happy to shop at store c.", 'we want to shop at the store d.'] df2 = [ "store a", "store b", "store c", 'store d' ] df3 = [ "like to", "likes to shop", "at store" ] myDataSet = list(zip(df1,df2)) df = pd.DataFrame(data = myDataSet, columns=['df1', 'df2']) # 定义样式函数:匹配到df3关键词则修改字体颜色 def highlight_matched_text(text): # 遍历df3中的每个关键词 for keyword in df3: if keyword in text: # 返回CSS样式,这里设置为红色,你可以改成其他颜色比如#ff0000 return 'color: red' # 没有匹配到则返回空样式 return '' # 将样式应用到df1列 styled_df = df.style.applymap(highlight_matched_text, subset=['df1']) # 展示结果(在Jupyter环境中会直接渲染样式) styled_df
关键细节说明
- 样式函数
highlight_matched_text:接收每个单元格的文本内容,遍历df3中的所有关键词,只要文本包含任意一个关键词,就返回对应的CSS颜色样式。 applymap方法:针对DataFrame的每个单元格应用样式函数,通过subset=['df1']指定只对df1列生效,避免影响其他列。- 颜色自定义:你可以把
'color: red'改成任意合法的CSS颜色值,比如十六进制色码'color: #2ecc71'(绿色)或者颜色名称'color: blue'。
如果需要同时给不同关键词设置不同颜色,或者给匹配的关键词单独加背景色,还可以扩展这个函数,比如用字典映射关键词和样式,再通过HTML标签包裹匹配内容(需要开启escape=False),有需要的话可以随时调整~
内容的提问来源于stack exchange,提问作者Steve DEU




