转置 pandas 样式器
Transpose pandas Styler
我想设计我的数据样式以进行一些数据分析。这适用于我最近才发现的 df.style
。然而,我似乎遗漏了一个关键方面:如何在 应用方法后转置 Styler ?当您想将列名与 subset
方法一起使用时,这很有用。
所以,下面的代码运行良好;它为 A 和 C 列中的单元格着色。现在我想转置轴以便得到四行(并删除索引)。
import numpy as np
df2 = pd.DataFrame(np.random.randn(10,4), columns=["A", "B", "C", "D"])
def set_style(v):
if v > 0:
return "background-color: #ff887c;"
elif v < 0:
return "background-color: #93d9ad;"
df2.style.format(precision=2).applymap(set_style, subset=["A", "C"]).hide_columns()
不幸的是,添加 .T
不起作用,因为
'Styler' object has no attribute 'T'
有没有办法做到这一点,即在完成所有其他处理后转置 Styler 对象?
不完全正确,但 pd.DataFrame.style
可以被认为是 HTML 格式的字符串,因此它没有转置运算符。
您可以转置数据并使用 pd.IndexSlice
对行进行切片:
df2.T.style.applymap(set_style, subset=pd.IndexSlice[['A','C'],:])
或者您可以重新编写函数以获取行并检查名称:
def set_style_row(r, sub=[]):
if r.name in sub:
return np.where(r>0, "background-color: #ff887c;", "background-color: #93d9ad;")
return [''] * len(r)
df2.T.style.apply(set_style_row, axis=1, sub=['A','C'])
输出:
我想设计我的数据样式以进行一些数据分析。这适用于我最近才发现的 df.style
。然而,我似乎遗漏了一个关键方面:如何在 应用方法后转置 Styler ?当您想将列名与 subset
方法一起使用时,这很有用。
所以,下面的代码运行良好;它为 A 和 C 列中的单元格着色。现在我想转置轴以便得到四行(并删除索引)。
import numpy as np
df2 = pd.DataFrame(np.random.randn(10,4), columns=["A", "B", "C", "D"])
def set_style(v):
if v > 0:
return "background-color: #ff887c;"
elif v < 0:
return "background-color: #93d9ad;"
df2.style.format(precision=2).applymap(set_style, subset=["A", "C"]).hide_columns()
不幸的是,添加 .T
不起作用,因为
'Styler' object has no attribute 'T'
有没有办法做到这一点,即在完成所有其他处理后转置 Styler 对象?
不完全正确,但 pd.DataFrame.style
可以被认为是 HTML 格式的字符串,因此它没有转置运算符。
您可以转置数据并使用 pd.IndexSlice
对行进行切片:
df2.T.style.applymap(set_style, subset=pd.IndexSlice[['A','C'],:])
或者您可以重新编写函数以获取行并检查名称:
def set_style_row(r, sub=[]):
if r.name in sub:
return np.where(r>0, "background-color: #ff887c;", "background-color: #93d9ad;")
return [''] * len(r)
df2.T.style.apply(set_style_row, axis=1, sub=['A','C'])
输出: