当我改变 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 …
我正面临着 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)
任何帮助,将不胜感激。
在具有许多 Pandas Dataframe 的 Jupyter 笔记本中,有没有办法为所有数据框设置默认样式选项?本质上是为了避免样板。
例如,隐藏所有数据帧的索引或列。df.style.hide_index()
是的,我可以编写包装函数,但更多地考虑诸如pd.options.display之类的东西
这是我的数据框-
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)
试图让它看起来像这样
我正在使用包含客户信息的数据集实验/学习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) 我想使用发散的颜色图来为 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)
上述显示中的零具有红色调,最接近白色背景的数字用于表示负数。
如何将 pandas 数据框设置为 Excel 表格(替代行颜色)?
样品样式:
样本数据:
import pandas as pd
import seaborn as sns
df = sns.load_dataset("tips")
Run Code Online (Sandbox Code Playgroud) 是否可以在 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 前端?
预先感谢您的任何帮助。
我正在尝试仅对某个输出进行着色,如下所示
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)
我怎样才能做到正确并且仅对由此产生的输出进行着色?
我想使用一些 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()我得到了这个:
有解决这个问题的想法吗?