Pandas表格样式设置与DataFrame隔行合并问题求助
解决方案
步骤1:数据重塑(实现隔行结构)
首先需要把当前的宽表结构转换为目标的行交替结构,无需用join/merge,拆分后交叉合并即可:
假设你的原始DataFrame名为df,执行以下代码:
import pandas as pd import numpy as np # 拆分出内容推荐和协同过滤两个子DataFrame df_content = df[['Content Based MOVIES TITLE', 'Content Based MOVIES ID']].rename( columns={'Content Based MOVIES TITLE': 'MOVIES TITLE', 'Content Based MOVIES ID': 'MOVIES ID'} ) df_collab = df[['Colaborative Filtering MOVIES TITLE', 'Colaborative Filtering MOVIES ID']].rename( columns={'Colaborative Filtering MOVIES TITLE': 'MOVIES TITLE', 'Colaborative Filtering MOVIES ID': 'MOVIES ID'} ) # 交叉合并成隔行结构 result_df = pd.DataFrame( np.vstack([df_content.values, df_collab.values]).reshape(-1, 2, order='F'), columns=['MOVIES TITLE', 'MOVIES ID'] )
步骤2:样式设置(配色+边框)
使用Pandas的Styler模块实现目标样式:
def apply_custom_style(df): styler = df.style # 给所有单元格添加边框和内边距 styler.set_properties(**{ 'border': '1px solid #cccccc', 'padding': '8px', 'text-align': 'left' }) # 设置表头样式 styler.set_table_styles([ {'selector': 'th', 'props': [ ('background-color', '#f0f0f0'), ('border', '1px solid #cccccc'), ('padding', '10px'), ('font-weight', 'bold') ]} ]) # 实现隔行配色(对应内容推荐、协同过滤交替行) styler.set_properties(**{'background-color': '#e6f2ff'}, subset=pd.IndexSlice[::2, :]) styler.set_properties(**{'background-color': '#f5f5f5'}, subset=pd.IndexSlice[1::2, :]) return styler # 应用样式并展示 styled_table = apply_custom_style(result_df) styled_table
说明
- 数据重塑部分:通过拆分两个推荐组的DataFrame,再按列交叉堆叠,直接生成内容推荐、协同过滤交替的行结构,替代你之前尝试的join/merge方法。
- 样式部分:通过
set_properties统一设置单元格边框和内边距,用索引切片::2和1::2分别设置奇偶行的背景色,完全匹配目标样式的视觉效果。
内容的提问来源于stack exchange,提问作者Avid Programmer
相关产品推荐
相关产品推荐

