Pandas 1.5中如何将多个Styler对象并排合并?
解决Pandas Styler对象横向并排合并的问题
Pandas 1.5版本的Styler.concat仅支持纵向合并(axis=0),要实现多个Styler对象的横向并排,需要利用Styler本质生成HTML表格的特性,手动组合布局。以下是针对你的场景的具体解决方案:
核心思路
- 先在循环中收集所有生成的Styler对象到列表中
- 提取每个Styler的HTML代码,用CSS Flex布局实现横向排列
- 可选:将组合后的HTML封装为新的Styler对象,保持原接口特性
修改后的代码示例
# 初始化列表用于收集所有Styler对象 styler_list = [] for each_col in colouring_columns: threshold_list2 = colouring_columns[each_col] mod_stat_columns2 = f"{aggregated_value}({each_col})" mod_stat_columns3 = [] mod_stat_columns3.extend(common_columns) mod_stat_columns3.append(mod_stat_columns2) individual_colouring_df = final_df[mod_stat_columns3] # 生成单个Styler对象(保留你原有的样式设置) styler_object2 = individual_colouring_df.reset_index(drop=True).style.set_properties(**{ "border": "1px solid black", "border-collapse": "collapse", "border-color": "black", "padding": "5px", }).set_table_styles([{ 'selector': 'th', 'props': [('border', '1px black solid !important')] }]).applymap(add_color, subset=mod_stat_columns2, threshold=threshold_list2, operator=aggregated_value).format(precision=2) # 将当前Styler加入列表 styler_list.append(styler_object2) # --- 横向合并处理 --- # 1. 生成横向排列的HTML(直接用于展示或导出) combined_html = f""" <div style="display: flex; gap: 15px; align-items: stretch;"> {''.join([styler.render() for styler in styler_list])} </div> """ # 2. 可选:封装为新的Styler对象(方便后续继续使用Styler的方法) import pandas as pd empty_styler = pd.DataFrame().style # 替换Styler的HTML渲染逻辑 empty_styler._repr_html_ = lambda: combined_html # 之后可以直接使用empty_styler,比如在Jupyter中展示、导出为HTML等 # display(empty_styler)
关键细节说明
display: flex:让容器内的表格横向排列,gap控制表格间的间距align-items: stretch:确保所有表格高度一致,避免布局错乱- 如果需要兼容旧浏览器,也可以用
display: inline-block替代flex,但flex布局更灵活 - 保留了你原有的所有样式设置,确保合并后的表格样式与单个表格一致
内容的提问来源于stack exchange,提问作者nsrsairajesh
相关产品推荐
相关产品推荐

