Панды условно форматируют поле жирным шрифтом - PullRequest
0 голосов
/ 11 октября 2019

У меня есть padas dataframe:

import pandas as pd
import numpy as np

df = pd.DataFrame({'foo':[1,2, 3, 4],
                   'bar':[[1,2,0.04], [1,2,0.04], [1,2,0.06], np.nan]})
display(df)

def stars(x, sign_level):
    if x is np.nan:
        return ''
    else:
        p_value = x[2]
        if p_value < sign_level:
            return '*'
        else:
            return ''

df['marker'] = df.bar.apply(stars, sign_level=0.05)
df

Вместо добавления столбца со звездой в случае, если результат считается значительным, возможно ли отформатировать ячейку (как в листе Excel) как полужирный?

отображать значения DataFrame () жирным шрифтом только в одной строке , кажется, может форматировать всю строку - я хотел бы переформатировать только определенную ячейку

Условно отформатируйте ячейку Python pandas

, похоже, похоже, хотя они только меняют фон, а не форматируют жирным шрифтом.

edit

код ниже уже можетизменить цвет фона - я просто не знаю, как отформатировать жирным шрифтом.

def highlight_significant(x, sign_level):
    if x is np.nan:
        return ''
    else:
        if isinstance(x, list):
            p_value = x[2]
            color = 'lightgreen' if p_value < sign_level else ''
            if p_value < sign_level:
                return 'background-color: %s' % color
            else:
                return ''
        else:
            return ''

df.style.applymap(highlight_significant, sign_level=0.05)

1 Ответ

1 голос
/ 11 октября 2019

Это может помочь ...

Настройка фрейма данных

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[0, 2] = np.nan

Создание функционала, который вы можете применить для добавления полужирного шрифта на основе определенного вами условия

def negative_bold(val):


    bold = 'bold' if val < 0 else ''


    return 'font-weight: %s' % bold

Примените функцию к стилю фрейма данных

s = df.style.applymap(negative_bold)

Посмотрите на фрейм данных, вы должны найти все отрицательные числа жирным шрифтом

enter image description here

Я посмотрел здесь https://mode.com/example-gallery/python_dataframe_styling/ и здесь https://pandas.pydata.org/pandas-docs/stable/user_guide/style.html

РЕДАКТИРОВАТЬ Добавление к этому ответу ...

Объединение двух стилей

У меня есть две функции: одна для выделения желтого цвета, номер отрицательный, а другая для выделения жирным шрифтом, если отрицательный

Negative_yellow

def negative_yellow(val):


    color = 'yellow' if val < 0 else ''


    return 'background-color:' + color  

Отрицательный полужирный

def negative_bold(val):


    bold = 'bold' if val < 0 else ''


    return 'font-weight: %s' % bold

Я применяю два фрейма данных следующим образом:

df.style.\
    applymap(negative_yellow).\
    applymap(negative_bold)

enter image description here

Я думаю, есть более элегантные способы сделать это. Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...