在Excel中对样式数据应用Lambda函数

0 投票
2 回答
767 浏览
提问于 2025-06-18 04:02

我在使用applymap()和lambda函数来替换Styler数据框中的现有字符串时遇到了问题。比如,我们需要把“Change”替换成“黄色”,把“New”替换成“绿色”。我在将这个函数应用到Styler数据框时遇到了困难。

import pandas as pd

out=r'C:\Users\test\changes.xlsx'
df = pd.read_excel(r'C:\Users\test\update.xlsx')

def mycolors(val):
    #print(val)
    stra = 'Changed-'
    stri = 'New-'
    color = 'white'
    if stra in str(val):
        color = 'yellow'
    elif stri in str(val):
        color = 'green'
        #print(type(color))
    return 'background-color: %s' % color


df = df.style.applymap(mycolors)
df = df.applymap(lambda x: str(x).replace('Changed-',''))

#print(df)
df.to_excel(out, header=True, index=False)

相关问题:

  • 暂无相关问题
暂无标签

2 个回答

0

在第一次使用applymap之后,数据框现在变成了一个 pandas.styler。你想要做的是利用这个styler的格式来访问单元格的文本内容:pandas.stylerStyler.format: 用于格式化单元格的文本显示值。

df = df.style.applymap(mycolors)
df = df.format(lambda x: str(x).replace('Changed-',''))
0

这个问题是通过使用openpyxl解决的,方法是重新打开Excel文件,并从中替换内容。

点击这里

撰写回答