python - Pandas 将样式设置为 excel“TypeError:第一个参数必须是可调用的”
问题描述
import pandas as pd
import numpy as np
np.random.seed(24)
df = pd.DataFrame({'A': np.linspace(1, 10, 10)})
df = pd.concat([df, pd.DataFrame(np.random.randn(10, 4), columns=list('BCDE'))],
axis=1)
df.iloc[3, 3] = np.nan
df.iloc[0, 2] = np.nan
df.style.applymap('green', subset=pd.IndexSlice[1:3, 'B': 'C']).\
to_excel('sA009.xlsx', engine='openpyxl')
TypeError:第一个参数必须是可调用的。df.style.applymap('green', subset=pd.IndexSlice[1:3, 'B': 'C']) 没有错误。但是 df.style.applymap('green', subset=pd.IndexSlice[1:3, 'B': 'C'])。
to_excel('sA009.xlsx', engine='openpyxl') 不起作用?为什么我需要使用“func”而不是“green”?
解决方案
该函数df.style.appylmap(...)
的第一个参数是一个函数,该函数接受一个标量并返回一个带有 CSS 属性-值对的字符串。
作为来自https://pandas.pydata.org/pandas-docs/stable/user_guide/style.html的示例,该函数将负数着色为红色,正数着色为黑色。
def color_negative_red(val):
"""
Takes a scalar and returns a string with
the css property `'color: red'` for negative
strings, black otherwise.
"""
color = 'red' if val < 0 else 'black'
return 'color: %s' % color
在这种情况下,单元格的样式仅取决于它自己的值。这意味着我们应该使用按Styler.applymap
元素工作的方法。
s = df.style.applymap(color_negative_red)
推荐阅读
- flutter - 如何在 Flutter 中使用图像和其他视图作为背景
- express - 通过多部分表单使用 CSRF 令牌发出的 POST 请求在生产中给出 404 错误,但在 localhost 上工作
- javascript - NodeJS中socket.io连接函数中的“socket”有什么用?
- python - 如何在 Windows 的 conda 中从 .yml 文件创建 env?
- kdb - 如何用 5 个字符的代码替换 kdb+ 列表中的零?
- python - 基于 Pandas 数据框中其他列的值范围的列总和
- google-chrome - 更改徽标,Windows 版 Chromium 浏览器的图标
- php - 执行代码时,不会显示 Postgres 错误日志或 VS 代码中的错误。试图将数据插入 PostgreSQL。表仍为空
- node.js - 以快递方式发送大缓冲区的最高效方式?
- python - 如何在python中使用print语句