【问题标题】:Applying the Lambda function for Style data in the excel将 Lambda 函数应用于 Excel 中的样式数据
【发布时间】:2020-05-20 03:29:34
【问题描述】:

我在应用带有 lambda 函数的 applymap() 来替换 Styler Dataframe 中的现有字符串时遇到问题。 例如。我们必须用“黄色”替换更改,用“绿色”替换新。我坚持应用该函数来替换 Styler Dataframe 中的值。

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)

【问题讨论】:

  • 这对我来说是正确的,你到底看到了什么问题?
  • 第二次使用 applymap() 和 lambda 函数来移除 'Changed-' 时出现异常。仅当我使用 lambda 和样式函数为 excel 着色时才会发生这种情况。
  • 太好了,您介意发布问题中异常的堆栈跟踪吗?
  • 我收到此警告,'CSSWarning:格式错误的属性:'nan' CSSWarning 中应有一个冒号,'。但是,如果我通过保持单个 applymap 运行,则它适用于替换功能。但是输出没有变化,它只是突出显示而不删除Changed-标签

标签: python pandas dataframe data-science pandas-styles


【解决方案1】:

在第一个 applymap 之后,数据框现在是 pandas.styler。您要做的是使用样式器的格式来访问单元格的文本:pandas.styler Styler.format: Formats the text display value of cells.

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

【讨论】:

  • 它不起作用,写入 xlsx 后它没有替换标签 'Changed-' 并且代码中没有错误。
【解决方案2】:

使用 openpyxl 解决了这个问题,方法是重新打开 excel 并替换其中的内容。

Click here

【讨论】:

    猜你喜欢
    • 2021-06-05
    • 1970-01-01
    • 2020-09-05
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    • 2016-12-16
    相关资源
    最近更新 更多