- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
pandas.io.formats.style.Styler.format
的公共(public)文档说
subset : IndexSlice
An argument toDataFrame.loc
that restricts which elementsformatter
is applied to.
_non_reducing_slice
东西?
if subset is None:
row_locs = range(len(self.data))
col_locs = range(len(self.data.columns))
else:
subset = _non_reducing_slice(subset)
if len(subset) == 1:
subset = subset, self.data.columns
sub_df = self.data.loc[subset]
.loc[]
兼容的东西时,我得到了一个错误。 :
>>> import pandas as pd
>>>
>>> df = pd.DataFrame([dict(a=1,b=2,c=3),dict(a=3,b=5,c=4)])
>>> df = df.set_index('a')
>>> print df
b c
a
1 2 3
3 5 4
>>> def J(x):
... return '!!!%s!!!' % x
...
>>> df.style.format(J, subset=[3])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\app\python\anaconda\2\lib\site-packages\pandas\io\formats\style.py", line 372, in format
sub_df = self.data.loc[subset]
File "c:\app\python\anaconda\2\lib\site-packages\pandas\core\indexing.py", line 1325, in __getitem__
return self._getitem_tuple(key)
File "c:\app\python\anaconda\2\lib\site-packages\pandas\core\indexing.py", line 841, in _getitem_tuple
self._has_valid_tuple(tup)
File "c:\app\python\anaconda\2\lib\site-packages\pandas\core\indexing.py", line 189, in _has_valid_tuple
if not self._has_valid_type(k, i):
File "c:\app\python\anaconda\2\lib\site-packages\pandas\core\indexing.py", line 1418, in _has_valid_type
(key, self.obj._get_axis_name(axis)))
KeyError: 'None of [[3]] are in the [columns]'
>>> df.loc[3]
b 5
c 4
Name: 3, dtype: int64
>>> df.loc[[3]]
b c
a
3 5 4
IndexSlice
而且看起来很不稳定——在某些情况下有效,在其他情况下无效,至少在 Pandas 0.20.3 中:
Python 2.7.14 |Anaconda custom (64-bit)| (default, Oct 15 2017, 03:34:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas as pd
>>> import numpy as np
>>> idx = pd.IndexSlice
>>> r = np.arange(16).astype(int)
>>> colors = 'red green blue yellow'.split()
>>> df = pd.DataFrame(dict(a=[colors[i] for i in r//4], b=r%4, c=r*100)).set_index(['a','b'])
>>> print df
c
a b
red 0 0
1 100
2 200
3 300
green 0 400
1 500
2 600
3 700
blue 0 800
1 900
2 1000
3 1100
yellow 0 1200
1 1300
2 1400
3 1500
>>> df.loc[idx['yellow']]
c
b
0 1200
1 1300
2 1400
3 1500
>>> def J(x):
... return '!!!%s!!!' % x
...
>>> df.style.format(J,idx['yellow'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\app\python\anaconda\2\lib\site-packages\pandas\io\formats\style.py", line 372, in format
sub_df = self.data.loc[subset]
File "c:\app\python\anaconda\2\lib\site-packages\pandas\core\indexing.py", line 1325, in __getitem__
return self._getitem_tuple(key)
File "c:\app\python\anaconda\2\lib\site-packages\pandas\core\indexing.py", line 836, in _getitem_tuple
return self._getitem_lowerdim(tup)
File "c:\app\python\anaconda\2\lib\site-packages\pandas\core\indexing.py", line 948, in _getitem_lowerdim
return self._getitem_nested_tuple(tup)
File "c:\app\python\anaconda\2\lib\site-packages\pandas\core\indexing.py", line 1023, in _getitem_nested_tuple
obj = getattr(obj, self.name)._getitem_axis(key, axis=axis)
File "c:\app\python\anaconda\2\lib\site-packages\pandas\core\indexing.py", line 1541, in _getitem_axis
return self._getitem_iterable(key, axis=axis)
File "c:\app\python\anaconda\2\lib\site-packages\pandas\core\indexing.py", line 1081, in _getitem_iterable
self._has_valid_type(key, axis)
File "c:\app\python\anaconda\2\lib\site-packages\pandas\core\indexing.py", line 1418, in _has_valid_type
(key, self.obj._get_axis_name(axis)))
KeyError: "None of [['yellow']] are in the [columns]"
>>> pd.__version__
u'0.20.3'
>>> df.style.format(J,idx['yellow'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\app\python\anaconda\2\lib\site-packages\pandas\io\formats\style.py", line 401, in format
sub_df = self.data.loc[subset]
File "c:\app\python\anaconda\2\lib\site-packages\pandas\core\indexing.py", line 1494, in __getitem__
return self._getitem_tuple(key)
File "c:\app\python\anaconda\2\lib\site-packages\pandas\core\indexing.py", line 868, in _getitem_tuple
return self._getitem_lowerdim(tup)
File "c:\app\python\anaconda\2\lib\site-packages\pandas\core\indexing.py", line 969, in _getitem_lowerdim
return self._getitem_nested_tuple(tup)
File "c:\app\python\anaconda\2\lib\site-packages\pandas\core\indexing.py", line 1048, in _getitem_nested_tuple
obj = getattr(obj, self.name)._getitem_axis(key, axis=axis)
File "c:\app\python\anaconda\2\lib\site-packages\pandas\core\indexing.py", line 1902, in _getitem_axis
return self._getitem_iterable(key, axis=axis)
File "c:\app\python\anaconda\2\lib\site-packages\pandas\core\indexing.py", line 1205, in _getitem_iterable
raise_missing=False)
File "c:\app\python\anaconda\2\lib\site-packages\pandas\core\indexing.py", line 1161, in _get_listlike_indexer
raise_missing=raise_missing)
File "c:\app\python\anaconda\2\lib\site-packages\pandas\core\indexing.py", line 1246, in _validate_read_indexer
key=key, axis=self.obj._get_axis_name(axis)))
KeyError: u"None of [Index([u'yellow'], dtype='object')] are in the [columns]"
>>> pd.__version__
u'0.24.2'
df.style.format(J,idx['yellow',:])
最佳答案
我同意您表现出的行为并不理想。
>>> df = (pandas.DataFrame([dict(a=1,b=2,c=3),
dict(a=3,b=5,c=4)])
.set_index('a'))
>>> df.loc[[3]]
b c
a
3 5 4
>>> df.style.format('{:.2f}', subset=[3])
Traceback (most recent call last)
...
KeyError: "None of [Int64Index([3], dtype='int64')] are in the [columns]"
pandas.IndexSlice
来解决此问题。作为子集参数:
>>> df.style.format('{:.2f}', subset=pandas.IndexSlice[[3], :])
_non_reducing_slice()
正在做,它的目标是合理的(确保一个子集不会将维度降低到系列)。它的实现将列表视为一系列列名:
From pandas/core/indexing.py:
def _non_reducing_slice(slice_):
"""
Ensurse that a slice doesn't reduce to a Series or Scalar.
Any user-paseed `subset` should have this called on it
to make sure we're always working with DataFrames.
"""
# default to column slice, like DataFrame
# ['A', 'B'] -> IndexSlices[:, ['A', 'B']]
kinds = (ABCSeries, np.ndarray, Index, list, str)
if isinstance(slice_, kinds):
slice_ = IndexSlice[:, slice_]
...
subset=[3]
引发的异常匹配
df[[3]]
的行为而不是
df.loc[[3]]
.
关于python - pandas.io.formats.style.Styler.format 中的子集参数有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59203022/
我正在使用以下方法为数据框中的单元格着色: import seaborn as sns cm1 = sns.diverging_palette(h_pos=130, h_neg=10, s=99, l
这可能是一个非常愚蠢的问题,但我似乎看不到 Pandas Styler 的输出。我使用了另一个用户之前发布的以下简单示例。 df = pd.DataFrame([[3,2,10,4],[20,1,3,
我刚找到 Xaml Styler我想试一试。任何人都可以分享一些使用此工具的经验吗?值得一试吗?在大型团队中使用它有什么缺点吗? 谢谢! 最佳答案 我每天都在使用它,它非常棒。这绝对值得一试,而且我没
如果我想在“c”语言的 Styler 配置中添加新关键字,并且我有我自定义的数据类型。例如: uint_8 a; uint_16 b; uint_32 c; uint_12bla bla;* 是否可以
我可以像这样访问列的子集: df[[5, 6]] ..但在以下行之后将文本向左推送并使其更具可读性: df = df.style.set_properties(**{'text-align': 'le
我找不到正确的术语来搜索和阅读有关脚本的信息,这些脚本用于允许用户在评论或写博客时添加一些 html 标签功能。例如,我们可以在 StackOverflow 上评论时使用 B、I、超链接、列表等功能
我被要求创建一个具有以下功能的文本编辑器: 从其他来源导入文本 对文本应用样式 样式是预定义的(例如样式“Level 1”可能会使文本变为粗体、绿色和斜体。 一种样式效果是在选择前后添加字符,例如,文
这是一个带有背景渐变的样式器对象: 无论如何,我只是想按原样保存它。已尝试使用 .render() 但不确定如何处理该 HTML 代码,并且通过阅读有关该主题的其他问题,目前似乎没有保存这些代码的方法
我正在尝试使用 pandas Styler 功能将带有彩色单元格的 pandas 数据框输出到控制台。当我在运行 python 2.7 的 Spyder 3.2.6 中运行代码示例时,控制台没有按预期
我正在使用 pandas Styler 类将某些列格式化为百分比。当我将输出写入 excel 时,列仍显示为 float 。为什么我可以正确地格式化和保存颜色,但不能正确保存百分比? import p
不确定是否可以利用 matplotlib 的 DivergingNorm for color maps在 pandas Styler 对象的框架下。举个例子: import pandas as pd
如果颜色基于前一行,我会花时间解决表格行着色问题。 在四点系统中存在以下逻辑。如果 0 或 1 分,则行颜色应为红色,如果 3 或 4 分,则行颜色应为绿色,如果 2 分,则颜色应与之前的行相同。 我
设置: 我在 Ubuntu (18.04.6) 上使用 Rstudio (2021.09.1.372, Ghost Orchid)。 我正在尝试使用 {styler} package在其中(1.6.2
我正在使用 jupyter nbconvert --to pdf --TemplateExporter.exclude_input=True Scorecard.ipynb 将我的笔记本导出为 pdf
当我有一个不使用 Styler 显示的数据框时,DatetimeIndex 按我想要的方式显示: In [1]: df 但是,当我尝试为数据帧显示应用样式时,DatetimeIndex 会转换为我不喜
我正在使用 Pandas DataFrames 的样式属性来创建用于电子邮件发送的 HTML 表格。 我遇到的问题是,当我希望它显示为日期时,我有一个显示为日期时间戳的日期时间索引。我对时间部分不感兴
我正在处理一个非常大的数据集(18000 行数据),我只想显示几行,例如前 5 行或 10 行。我试图使用 pandas.DataFrame().head(10) 方法,但我正在做一些样式和格式设置,
pandas.io.formats.style.Styler.format 的公共(public)文档说 subset : IndexSlice An argument to DataFrame.lo
我有以下代码生成一个 pandas.io.formats.style.Styler 对象: import pandas as pd import numpy as np df = pd.DataFra
我需要一个多合一的 jQuery 输入类型样式器,它可以美化选择框、单选按钮、复选框、文本框、文本区域、多选、文件输入等。我正在大力搜索,但我得到的一切都不适合这种情况。 有的好用但是验证引擎不支持,
我是一名优秀的程序员,十分优秀!