根据 python 中的其他列将列值设为粗体
Making column values bold based on other columns in python
我想弄清楚如何根据另一列中的值在我的 pandas 数据框中制作列值,特别是关于回归输出并使对应于低 p 值的系数加粗。我正在使用 python.
我有以下包含回归输出结果的数据框:
Model_run Param_1 Param_2 Param_3 Param_1_pv Param_2_pv Param_3_pv
-----------------------------------------------------------------------------------
1 .453 .756 .945 .06 .04 .03
2 .452 .336 .342 .04 .03 .22
3 .264 .443 .044 .33 .05 .32
4 .356 .543 .033 .01 .05 .14
5 .234 .435 .032 .04 .03 .09
...
其中“Param”列指的是每个参数(自变量)的系数,pv 表示每个参数自变量的“P 值”。因此,我想将对应于 <= 0.05 的 p 值的系数值设为粗体。我会显示我想要的输出,但我认为此处的代码格式不允许您使用粗体。
如何在 python 中完成此操作?我已经看到我可以使用 .style.applymap(),但我对如何根据相应的 p 值列格式化系数感到困惑,因为大多数教程只展示如何格式化列本身。
您可以将 pandas.DataFrame.style.apply
与自定义函数一起使用。
def bold(v, props="", threshold=0.05):
if v.name + "_pv" not in df:
return np.full(v.shape, "")
return np.where(df[v.name + "_pv"].le(threshold), props, "")
df.style.apply(bold, props="font-weight: bold", axis=0, threshold=0.05)
解决方法:
def bold(v, threshold=0.05):
if v.name + "_pv" not in df:
return np.full(v.shape, "")
return np.where(df[v.name + "_pv"].le(threshold), "font-weight: bold", "")
df.style.apply(bold, axis=0, threshold=0.05)
输出:
洞察力:
该函数查找后缀为 _pv
的列,然后将该列与 threshold
.
进行比较
如果未找到包含 _pv
的列,它将 return 一个空字符串数组,表示特定单元格不需要样式(在本例中为 font-weight: bold
)。
如果找到带有 _pv
的列,它将应用 numpy.where
来制作一个与 props
和 ""
混合的数组,以过滤掉需要设置样式的单元格应用。
我想弄清楚如何根据另一列中的值在我的 pandas 数据框中制作列值,特别是关于回归输出并使对应于低 p 值的系数加粗。我正在使用 python.
我有以下包含回归输出结果的数据框:
Model_run Param_1 Param_2 Param_3 Param_1_pv Param_2_pv Param_3_pv
-----------------------------------------------------------------------------------
1 .453 .756 .945 .06 .04 .03
2 .452 .336 .342 .04 .03 .22
3 .264 .443 .044 .33 .05 .32
4 .356 .543 .033 .01 .05 .14
5 .234 .435 .032 .04 .03 .09
...
其中“Param”列指的是每个参数(自变量)的系数,pv 表示每个参数自变量的“P 值”。因此,我想将对应于 <= 0.05 的 p 值的系数值设为粗体。我会显示我想要的输出,但我认为此处的代码格式不允许您使用粗体。
如何在 python 中完成此操作?我已经看到我可以使用 .style.applymap(),但我对如何根据相应的 p 值列格式化系数感到困惑,因为大多数教程只展示如何格式化列本身。
您可以将 pandas.DataFrame.style.apply
与自定义函数一起使用。
def bold(v, props="", threshold=0.05):
if v.name + "_pv" not in df:
return np.full(v.shape, "")
return np.where(df[v.name + "_pv"].le(threshold), props, "")
df.style.apply(bold, props="font-weight: bold", axis=0, threshold=0.05)
解决方法:
def bold(v, threshold=0.05):
if v.name + "_pv" not in df:
return np.full(v.shape, "")
return np.where(df[v.name + "_pv"].le(threshold), "font-weight: bold", "")
df.style.apply(bold, axis=0, threshold=0.05)
输出:
洞察力:
该函数查找后缀为 _pv
的列,然后将该列与 threshold
.
如果未找到包含 _pv
的列,它将 return 一个空字符串数组,表示特定单元格不需要样式(在本例中为 font-weight: bold
)。
如果找到带有 _pv
的列,它将应用 numpy.where
来制作一个与 props
和 ""
混合的数组,以过滤掉需要设置样式的单元格应用。