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

如何将Python DataFrame调整为指定格式在Jupyter Notebook中显示

实现方法

你需要的是在Jupyter Notebook中合并DataFrame相邻相同值的单元格显示效果,不需要修改原始数据结构,直接使用pandas内置的Styler组件即可实现。你之前使用groupby达不到效果是正常的,groupby是用于数据聚合计算的工具,和显示层面的单元格合并不属于同一应用场景。

代码示例

1. 模拟原始数据(可直接替换为你自己的DataFrame)

import pandas as pd

# 此处为模拟的原始数据结构,直接替换为你自己的df即可
data = {
    "一级分类": ["食品", "食品", "食品", "日用品", "日用品", "电器"],
    "二级分类": ["零食", "零食", "生鲜", "清洁用品", "洗漱用品", "家电"],
    "商品名称": ["薯片", "饼干", "苹果", "洗洁精", "牙膏", "冰箱"],
    "售价": [9.9, 12.9, 6.9, 19.9, 14.9, 2999]
}
df = pd.DataFrame(data)

2. 合并单元格显示代码

# 自定义合并重复值的显示样式
def merge_cell(val, current_series):
    if current_series.shift()[current_series.index == val.index[0]].values[0] == val.values[0]:
        # 相同值隐藏文字+去掉上边框,视觉上实现合并效果
        return "color: transparent; border-top: none"
    return ""

# 填入你需要合并相同值的列名,可根据自己的需求修改
need_merge_cols = ["一级分类", "二级分类"]

df_styler = df.style
for col in need_merge_cols:
    df_styler = df_styler.apply(merge_cell, subset=[col], current_series=df[col])

# 可选:设置全局居中对齐,显示效果更美观
df_styler = df_styler.set_properties(**{"text-align": "center"})
df_styler = df_styler.set_table_styles([
    {"selector": "th", "props": [("text-align", "center")]}
])

# Jupyter中直接运行此行即可显示目标效果
df_styler

注意事项

  • 上述方法仅修改Jupyter Notebook中的显示效果,不会改动原始DataFrame的数据,后续数据处理仍可正常使用原df对象
  • 操作前请保证需要合并的列已按值排序,确保相同值的行是相邻状态,否则无法实现合并效果
  • 如果你需要将该格式导出为Excel,可额外使用openpyxl等库处理单元格合并,仅在Jupyter内显示无需额外操作

内容的提问来源于stack exchange,提问作者LCh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:06:07