You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 09:02:47