стилизация фрейма данных pandas в python приводит к тому, что значения с плавающей запятой содержат больше нулей после десятичной точки

#python #pandas #pandas-styles

#python #pandas #pandas-стили

Вопрос:

это мой код стиля, чтобы положительные числа отображались зелеными, а отрицательные — красными, если я просто распечатаю df, он отобразит такие числа:

25.72,36.28,0.17

однако со стилем они отображаются следующим образом: 25.7200000, 36.2800000, 0.1700000

как бы я заставил их выглядеть как раньше, но с красочным стилем? спасибо за вашу помощь, я действительно новичок в python

 def color_negative_red(value):
    if isinstance(value, str):
        color = 'black'
        return 'color: %s' % color
    if isinstance(value, float):
        if value > 0:
            color = "green"
            return 'color: %s' % color
        if value < 0:
            color = "red"
            return 'color: %s' % color


df.style.applymap(color_negative_red)



 

Ответ №1:

Вы можете указать формат для столбцов с плавающей запятой по словарю в Styler.format :

 df = pd.DataFrame({'a': [25.72,36.28,0.17], 'b': [9.7,-9, 9.8], 'c':list('abc')}) 


def color_negative_red(value):
    if isinstance(value, str):
        color = 'black'
        return 'color: %s' % color
    if isinstance(value, float):
        if value > 0:
            color = "green"
            return 'color: %s' % color
        if value < 0:
            color = "red"
            return 'color: %s' % color

d = dict.fromkeys(df.select_dtypes('float').columns, "{:.2%}")
df.style.applymap(color_negative_red).format(d)
 

рис