第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

熊貓 style.background_gradient 忽略 NaN

熊貓 style.background_gradient 忽略 NaN

茅侃侃 2022-01-05 10:17:57
我有以下代碼將數(shù)據(jù)幀轉(zhuǎn)儲results到 HTML 表格中,以便TIME_FRAMES根據(jù) seaborn 的顏色圖對中的列進(jìn)行著色。import seaborn as snsTIME_FRAMES = ["24h", "7d", "30d", "1y"]# Set CSS properties for th elements in dataframeth_props = [    ('font-size', '11px'),    ('text-align', 'center'),    ('font-weight', 'bold'),    ('color', '#6d6d6d'),    ('background-color', '#f7f7f9')]# Set CSS properties for td elements in dataframetd_props = [    ('font-size', '11px')]cm = sns.light_palette("green", as_cmap=True)s = (results.style.background_gradient(cmap=cm, subset=TIME_FRAMES)                  .set_table_styles(styles))a = s.render()with open("test.html", "w") as f:    f.write(a)由此,我收到警告:/python3.7/site-packages/matplotlib/colors.py:512: RuntimeWarning: 在less xa[xa < 0] = -1 中遇到無效值而且,正如您在下圖中所看到的,列30d和1y無法正確呈現(xiàn),因?yàn)樗鼈兙哂?NaN。我怎樣才能做到這一點(diǎn),以便忽略 NaN 并且僅使用有效值呈現(xiàn)顏色?將 NaN 設(shè)置為 0 不是一個有效的選項(xiàng),因?yàn)檫@里的 NaN 本身就具有意義。
查看完整描述

3 回答

?
楊__羊羊

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個贊

有點(diǎn)晚了,但供以后參考。


我遇到了同樣的問題,這是我解決的方法:


import pandas as pd

import numpy as np

dt = pd.DataFrame({'col1': [1,2,3,4,5], 'col2': [4,5,6,7,np.nan], 'col3': [8,2,6,np.nan,np.nan]})

先填入一個大值的nas


dt.fillna(dt.max().max()+1, inplace=True)

將此最大值的字體著色為白色的函數(shù)


def color_max_white(val, max_val):

    color = 'white' if val == max_val else 'black'

    return 'color: %s' % color

將最大值的背景著色為白色的函數(shù)


def highlight_max(data, color='white'):

    attr = 'background-color: {}'.format(color)

    if data.ndim == 1:  # Series from .apply(axis=0) or axis=1

        is_max = data == data.max()

        return [attr if v else '' for v in is_max]

    else:  # from .apply(axis=None)

        is_max = data == data.max().max()

        return pd.DataFrame(np.where(is_max, attr, ''),

                            index=data.index, columns=data.columns)

把所有東西放在一起


max_val = dt.max().max()


dt.style.format("{:.2f}").background_gradient(cmap='Blues', axis=None).applymap(lambda x: color_max_white(x, max_val)).apply(highlight_max, axis=None)

http://img1.sycdn.imooc.com//61d5009e000131e601370157.jpg


查看完整回答
反對 回復(fù) 2022-01-05
?
小怪獸愛吃肉

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個贊

這對我來說很好用

df.style.applymap(lambda x: 'color: transparent' if pd.isnull(x) else '')


查看完整回答
反對 回復(fù) 2022-01-05
?
慕勒3428872

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個贊

我的背景漸變?nèi)詴褂米畲笾祦碛?jì)算顏色漸變。我實(shí)現(xiàn)了@night-train 的設(shè)置顏色圖的建議,然后使用了兩個函數(shù):


import copy

cmap = copy.copy(plt.cm.get_cmap("Blues"))

cmap.set_under("white")


def color_nan_white(val):

    """Color the nan text white"""

    if np.isnan(val):

        return 'color: white'


def color_nan_white_background(val):

     """Color the nan cell background white"""

    if np.isnan(val):

        return 'background-color: white'

然后再次將它們應(yīng)用到我的數(shù)據(jù)幀中,為方便起見,從@quant 中借用了一點(diǎn):


(df.style

    .background_gradient(axis='index')

    .applymap(lambda x: color_nan_white(x))

    .applymap(lambda x: color_nan_white_background(x))

)

然后它完美地工作。


查看完整回答
反對 回復(fù) 2022-01-05
  • 3 回答
  • 0 關(guān)注
  • 465 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號