在Excel中对样式数据应用Lambda函数
我在使用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.styler。Styler.format: 用于格式化单元格的文本显示值。
df = df.style.applymap(mycolors)
df = df.format(lambda x: str(x).replace('Changed-',''))
0
这个问题是通过使用openpyxl解决的,方法是重新打开Excel文件,并从中替换内容。