Python 熊猫样式背景渐变-行和列

Python 熊猫样式背景渐变-行和列,python,pandas,Python,Pandas,添加背景渐变对于快速检查我的输出表非常有用。但是,它是按行或按列应用的。是否有可能一次将其应用于整个数据帧 编辑:最起码的工作示例: df = pd.DataFrame([[3,2,10,4],[20,1,3,2],[5,4,6,1]]) df.style.background_gradient() 当前,您无法同时为两行/列设置由所指的背景梯度。诀窍是定制: 您可以使用axis=None来消除调用中的最小和最大计算: def background_gradient(s, m=None, M=

添加背景渐变对于快速检查我的输出表非常有用。但是,它是按行或按列应用的。是否有可能一次将其应用于整个数据帧

编辑:最起码的工作示例:

df = pd.DataFrame([[3,2,10,4],[20,1,3,2],[5,4,6,1]])
df.style.background_gradient()

当前,您无法同时为两行/列设置由所指的
背景梯度。诀窍是定制:


您可以使用
axis=None
来消除调用中的最小和最大计算:

def background_gradient(s, m=None, M=None, cmap='PuBu', low=0, high=0):
    print(s.shape)
    if m is None:
        m = s.min().min()
    if M is None:
        M = s.max().max()
    rng = M - m
    norm = colors.Normalize(m - (rng * low),
                            M + (rng * high))
    normed = s.apply(norm)

    cm = plt.cm.get_cmap(cmap)
    c = normed.applymap(lambda x: colors.rgb2hex(cm(x)))
    ret = c.applymap(lambda x: 'background-color: %s' % x)
    return ret


df.style.apply(background_gradient, axis=None)

编辑:您可能需要使用
normed=s.apply(lambda x:norm(x.values))
for

设置
axis=None
在1.0.5中对我有效您需要将axis设置为None。对于我来说,使用seaborn的最佳解决方案:

import seaborn as sns
import pandas as pd
cm = sns.color_palette("blend:white,green", as_cmap=True)
df.style.background_gradient(cmap = cm,axis=None)

您是否尝试过设置axis=None
?我现在尝试过,但它会抛出一个错误。。好主意;-)什么样的错误?你能分享你的代码和数据框架的一小部分吗?我添加了一个例子。添加
axis=None
时的错误消息是:
序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。不过,您可以创建一个自定义函数,并将颜色应用于您想要区分它们的特定阈值。谢谢!我可以在循环中使用样式吗?我有一个字典,其中的值是dataFrame。我想循环浏览字典并用样式显示数据帧@圭尔梅Beltramini@JasonLi,如果您的
dict
pandas.DataFrame
是这样的
dict\u dfs={'df1':pd.DataFrame(…),'df2':pd.DataFrame(…),…}
,您可以使用IPython.display导入display中的
并将
显示(df.style.apply(…)
放入for循环中(例如,dict_dfs.values()中df的
)(注意:由于注释中的代码无法使用块格式,我必须简化示例,但我希望很清楚)。将pandas从0.19升级到0.24后,它可以工作。谢谢@Guiherme Beltramini
import seaborn as sns
import pandas as pd
cm = sns.color_palette("blend:white,green", as_cmap=True)
df.style.background_gradient(cmap = cm,axis=None)