标签: pandas-styles

更改 pandas.DataFrame 的样式:永久?

当我改变 a 的样式时pandas.DataFrame,例如像这样

        # color these columns
        color_columns = ['roi', 'percent_of_ath']
        (portfolio_df
            .style
            # color negative numbers red
            .apply(lambda v: 'color: red' if v < 0 else 'color: black',
                   subset=color_columns)
            # color selected cols light blue
            .apply(lambda s: 'background-color: lightblue',
                    subset=color_columns))
Run Code Online (Sandbox Code Playgroud)

应用于数据框的样式不是永久性的。

为了让它们粘在一起,我可以将部件的输出分配(portfolio_df ...给同一个数据帧,如下所示:

portfolio_df = (portfolio_df ...
Run Code Online (Sandbox Code Playgroud)

portfolio_df在 Jupyter Notebook 中显示覆盖的内容,我可以看到样式精美的 DataFrame。但是尝试从模块导入的函数内更改样式,我失败了。我在函数中构造 DataFrame,更改样式,从函数返回(现在)样式化的 DataFrame,将其显示在 Jupyter Notebook 中,我看到一个非样式化的 DataFrame。

编辑

检查样式操作的返回值的类型

s = (portfolio_df.style.apply(...

我看到这个:

>>> type(s)
pandas.io.formats.style.Styler
Run Code Online (Sandbox Code Playgroud)

所以该操作不会返回一个DataFrame,而是一个...Styler对象。我错误地认为我可以将此返回值重新分配给我的原始 DataFrame,从而覆盖它并使样式更改永久化。

问题

将样式应用于 DataFrame …

python pandas jupyter-notebook pandas-styles

10
推荐指数
1
解决办法
2575
查看次数

Pandas 风格不适用于 Google colab

我正面临着 Google colab 和 pandas 风格的奇怪行为。在 google colab 上对数据框应用样式时,一些基本样式被搞砸了:表格变得更小更紧凑,每隔一行的突出显示消失,行的悬停突出显示停止工作。

我附上了两张屏幕截图的并排图片:一张来自普通的 Jupiter 笔记本,一切正常,另一张来自 Google colab - 其中样式使事情变得混乱。

代码非常简单:

df = pd.DataFrame(range(5)) # create a data frame

df                          # in a new cell - just show the dataframe

df.style.highlight_max()    # again, in a new cell. Works in Jupyter notebook, 
                            # doesn't work well on Google Colab. 
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激。

在此处输入图片说明

css pandas google-colaboratory pandas-styles

10
推荐指数
1
解决办法
1028
查看次数

将 Pandas 样式应用于 Jupyter Notebook 中的所有数据框

在具有许多 Pandas Dataframe 的 Jupyter 笔记本中,有没有办法为所有数据框设置默认样式选项?本质上是为了避免样板。

例如,隐藏所有数据帧的索引或列。df.style.hide_index()

是的,我可以编写包装函数,但更多地考虑诸如pd.options.display之类的东西

python dataframe pandas pandas-styles

8
推荐指数
1
解决办法
369
查看次数

类型错误:(“不支持的操作数类型 -:'decimal.Decimal' 和 'float'”,'发生在索引增长(%)')

这是我的数据框-

    c2_name Q1_GMV      Q2_GMV     growth(%)
0   A       1170727260  221801763   -81
1   B       1604716749  829186592   -48
2   C       661473481   553698141   -16
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 Pandas 样式将 CSS 添加到数据帧输出中。

# Set colormap equal to seaborns light green color palette
cm = sns.light_palette("green", as_cmap=True)

(df.style
  .background_gradient(cmap=cm, subset=['growth(%)'])
  .set_caption('This is a custom caption.')
  .set_table_styles(styles))
Run Code Online (Sandbox Code Playgroud)

但是得到这个错误

TypeError: ("unsupported operand type(s) for -: 'decimal.Decimal' and 'float'", 'occurred at index growth(%)')
Run Code Online (Sandbox Code Playgroud)

试图让它看起来像这样

这里

styling pandas jupyter-notebook pandas-styles

7
推荐指数
1
解决办法
8669
查看次数

将样式应用于 pandas DataFrame 行

我正在使用包含客户信息的数据集实验/学习Python。

DataFrame 结构如下(这些是组成记录):

import pandas as pd

df1 = pd.DataFrame({'left_name' : ['James', 'Mary', 'John', 'Patricia'],
                    'left_age' : [30, 37, 30, 35], 
                    'right_name' : ['Robert', 'Jennifer', 'Michael', 'Linda'], 
                    'right_age' : [30, 31, 38, 35]})
print(df1)

  left_name  left_age right_name  right_age
0     James        30     Robert         30
1      Mary        37   Jennifer         31
2      John        30    Michael         38
3  Patricia        35      Linda         35
Run Code Online (Sandbox Code Playgroud)

将该transpose方法应用到df1,我们得到以下视图:

df2 = df1.T
print(df2)

                 0         1        2         3
left_name    James      Mary     John  Patricia
left_age        30        37       30 …
Run Code Online (Sandbox Code Playgroud)

python formatting dataframe pandas pandas-styles

7
推荐指数
2
解决办法
9924
查看次数

在 pandas 数据框热图显示中使用中心发散颜色图

我想使用发散的颜色图来为 pandas 数据框的背景着色。使这一过程比人们想象的更棘手的一个方面是居中。在下面的示例中,使用了红到蓝颜色图,但颜色图的中间不用于零附近的值。如何创建居中背景颜色显示,其中零为白色,所有负片为红色色调,所有正片为蓝色色调?

import pandas as pd
import numpy as np
import seaborn as sns

np.random.seed(24)
df = pd.DataFrame()
df = pd.concat([df, pd.DataFrame(np.random.randn(10, 4)*10, columns=list('ABCD'))],
               axis=1)
df.iloc[0, 2] = 0.0
cm = sns.diverging_palette(5, 250, as_cmap=True)
df.style.background_gradient(cmap=cm).set_precision(2)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

上述显示中的零具有红色调,最接近白色背景的数字用于表示负数。

python dataframe pandas colormap pandas-styles

7
推荐指数
1
解决办法
4698
查看次数

Pandas DataFrame styler - 如何将 pandas dataframe 设置为 Excel 表的样式?

在此输入图像描述

如何将 pandas 数据框设置为 Excel 表格(替代行颜色)?

样品样式:

在此输入图像描述

样本数据:

import pandas as pd
import seaborn as sns

df = sns.load_dataset("tips")
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas pandas-styles

7
推荐指数
1
解决办法
1万
查看次数

是否可以在 IPython 控制台中显示 pandas 样式?

是否可以在 iPython 控制台中显示pandas 样式?Jupyter 笔记本中的以下代码

import pandas as pd
import numpy as np

np.random.seed(24)
df = pd.DataFrame({'A': np.linspace(1, 10, 5)})
df = pd.concat([df, pd.DataFrame(np.random.randn(5, 1), columns=list('B'))],
               axis=1)
df.style.format({'B': "{:.2%}"})
Run Code Online (Sandbox Code Playgroud)

正确产生

在此输入图像描述

在控制台中我只得到

In [294]: df.style.format({'B': "{:.2%}"})
Out[294]: <pandas.io.formats.style.Styler at 0x22f3f4fe780>
Run Code Online (Sandbox Code Playgroud)

是否可以在这里实现类似的结果,或者样式引擎是否依赖于 html 前端?

预先感谢您的任何帮助。

python console ipython pandas pandas-styles

6
推荐指数
1
解决办法
1448
查看次数

熊猫:属性错误:“系列”对象没有属性“样式”

我正在尝试仅对某个输出进行着色,如下所示

df['a'] = df['a'].fillna(df['b'].map(s)).style.applymap(lambda x: "background-color:yellow")
Run Code Online (Sandbox Code Playgroud)

所以我得到了错误

AttributeError: 'Series' object has no attribute 'style'
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到正确并且仅对由此产生的输出进行着色?

python series pandas pandas-styles

6
推荐指数
1
解决办法
1万
查看次数

如何在streamlit上隐藏数据帧索引?

我想使用一些 pandas 风格的资源,并且想隐藏 Streamlit 上的表索引。

我尝试过这个:

import streamlit as st
import pandas as pd


table1 = pd.DataFrame({'N':[10, 20, 30], 'mean':[4.1, 5.6, 6.3]})
st.dataframe(table1.style.hide_index().format(subset=['mean'],
             decimal=',', precision=2).bar(subset=['mean'], align="mid"))
Run Code Online (Sandbox Code Playgroud)

但无论如何.hide_index()我得到了这个:

在此输入图像描述

有解决这个问题的想法吗?

python pandas pandas-styles streamlit

6
推荐指数
1
解决办法
1万
查看次数