Python中基于p值为pandas回归输出表对应系数列设置加粗格式的方法
实现方法
核心逻辑是通过Styler.apply()按行遍历数据,为每个回归系数匹配对应的p值列做阈值判断,满足条件就设置加粗样式。
完整代码示例
import pandas as pd # 构造示例DataFrame,和你的数据结构一致 data = { 'Model_run': [1,2,3,4,5], 'Param_1': [.453, .452, .264, .356, .234], 'Param_2': [.756, .336, .443, .543, .435], 'Param_3': [.945, .342, .044, .033, .032], 'Param_1_pv': [.06, .04, .33, .01, .04], 'Param_2_pv': [.04, .03, .05, .05, .03], 'Param_3_pv': [.03, .22, .32, .14, .09] } df = pd.DataFrame(data) # 自动提取所有回归系数列(排除_pv结尾的p值列) param_cols = [col for col in df.columns if col.startswith('Param_') and not col.endswith('_pv')] # 自定义样式函数:按行判断是否需要加粗 def bold_significant(row): # 初始化所有单元格的样式为无 style_list = [''] * len(row) for param in param_cols: # 匹配对应p值列 pv_col = f"{param}_pv" if row[pv_col] <= 0.05: # 获取系数列的位置,设置加粗样式 col_pos = row.index.get_loc(param) style_list[col_pos] = 'font-weight: bold' return style_list # 应用样式,axis=1表示按行处理 styled_df = df.style.apply(bold_significant, axis=1) # 直接在jupyter等环境显示styled_df即可看到效果,也可以导出到Excel保留格式 # styled_df.to_excel('回归结果_加粗显著项.xlsx', engine='openpyxl', index=False)
说明
- 不使用
applymap的原因是该方法仅能访问单个单元格的数值,无法获取同一行其他列的p值做判断,按行处理的apply更适配这个场景 - 如果后续新增参数列,不需要修改代码,
param_cols会自动识别所有符合规则的系数列 - 导出到Excel时需要提前安装
openpyxl依赖,格式会完整保留
内容的提问来源于stack exchange,提问作者LostinSpatialAnalysis
相关产品推荐
相关产品推荐

