当前位置: 首页 > 知识库问答 >
问题:

熊猫有条件地以粗体格式格式化字段

乜清野
2023-03-14

我有一个熊猫数据框:

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熊猫单元格

看起来很相似,虽然它们只改变背景,而不是粗体的格式。

下面的代码已经可以更改背景颜色了-我只是不知道如何设置为粗体。

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个答案

督翰学
2023-03-14

这可能会有帮助...

设置数据帧

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)

看看数据框,你会发现所有的负数都是粗体的

我看了这里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)

我想有更优雅的方式来做这件事。希望这有帮助:)

 类似资料:
  • 问题内容: 我有一个从以下代码获得的数据框,但无法将索引转换为dd / mm / yyyy 这是结果 我已经在stackoverflow上搜索了其他几个不同的变体,但是我找不到适合的组合。 它仍然打印出as 问题答案: 如果需要则是个问题,因为是in的默认显示格式。 如果需要通过索引: 不幸的是,这不起作用-docs:

  • number(string $format): self string $format $config = [ 'path' => './tests' ]; ​ $fileObject = new \Vtiful\Kernel\Excel($config); ​ $fileObject = $fileObject->fileName('tutorial.xlsx'); $fileHan

  • 我们可以看到格式化就是通过格式字符串得到特定格式: format!("{}", foo) -> "3735928559" format!("0x{:X}", foo) -> "0xDEADBEEF" format!("0o{:o}", foo) -> "0o33653337357" 根据使用的参数类型,同样的变量(foo)能够格式化成不同的形式:X, o 和未指定形式。 这个格式化的功能是通过 t

  • 问题内容: 我正在创建一个HTML表,将在Excel中作为电子表格打开。我可以使用哪种HTML标记或CSS样式“讲述” Excel以将单元格的内容显示为文本? 问题答案: 您可以将格式应用于数字,文本,日期等的单元格。 请参阅我以前关于此的答案:HTML toExcel:如何告诉Excel将列视为数字? (已调整的代码段) 如果将CSS类添加到页面: 并在您的TD上拍那些课,行得通吗?

  • 问题内容: 我有大熊猫表格数据框要转换为JSON。标准的.to_json()函数不会为JSON创建紧凑格式。如何仅使用pandas获得这样的JSON输出格式? 这是用于表格数据的JSON的一种非常紧凑的格式。(我可以在行上循环。…但是) 问题答案: 看来你需要先于: 由于尚未实现: ValueError:选项“ orient”的值“ list”无效 编辑: 如果index不是column,请添加:

  • 格式化 格式化是一件主观的事。如同这里的许多规则一样,这里并没有一定/立刻需要遵守的规则。可以在这里完成格式的自动化。 大小写一致 JS 是弱类型语言,合理的采用大小写可以告诉你关于变量/函数等的许多消息。 这些规则是主观定义的,团队可以根据喜欢进行选择。重点在于无论选择何种风格,都需要注意保持一致性。 反例: var DAYS_IN_WEEK = 7; var daysInMonth = 30;