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

如何在Pandas DataFrame中合并相同分类显示且保留所有字段值?

实现Pandas DataFrame相同分类合并显示的方法

要实现你想要的相同分类合并显示、保留所有字段的效果,不需要用groupby(groupby更适合聚合字段值,而这里只是调整显示格式),直接处理重复分类的显示即可,下面提供两种可行方案:

方案1:修改DataFrame内容(永久修改)

直接将重复的category值替换为空字符串,然后格式化输出:

import pandas as pd

# 创建原始DataFrame
df = pd.DataFrame({
    "category": ['Associates', 'Manager', 'Associates', 'Associates', 'Engineer', 'Engineer', 'Manager', 'Engineer'],
    "name": ['Abby', 'Jenny', 'Thomas', 'John', 'Eve', 'Danny', 'Kenny', 'Helen'],
    "email": ['Abby@email.com', 'Jenny@email.com', 'Thomas@email.com', 'John@email.com', 'Eve@email.com', 'Danny@email.com', 'Kenny@email.com', 'Helen@email.com']
})

# 将重复的category替换为空字符串
df['category'] = df['category'].mask(df['category'].duplicated(), '')

# 格式化输出(隐藏索引,调整列宽保证对齐)
print(df.to_string(index=False, col_space=[12, 8, 18]))

输出结果完全符合你的要求:

category     name     email
Associates   Abby     Abby@email.com
             Thomas   Thomas@email.com
             John     John@email.com
Manager      Jenny    Jenny@email.com
             Kenny    Kenny@email.com
Engineer     Eve      Eve@email.com
             Danny    Danny@email.com
             Helen    Helen@email.com

方案2:用Styler设置显示样式(不修改原始数据)

如果不想改动原始DataFrame的内容,只是在显示时隐藏重复分类值,可以用Pandas的Styler功能(适合Jupyter Notebook等交互式环境):

import pandas as pd

df = pd.DataFrame({
    "category": ['Associates', 'Manager', 'Associates', 'Associates', 'Engineer', 'Engineer', 'Manager', 'Engineer'],
    "name": ['Abby', 'Jenny', 'Thomas', 'John', 'Eve', 'Danny', 'Kenny', 'Helen'],
    "email": ['Abby@email.com', 'Jenny@email.com', 'Thomas@email.com', 'John@email.com', 'Eve@email.com', 'Danny@email.com', 'Kenny@email.com', 'Helen@email.com']
})

# 定义隐藏重复分类的样式函数
def hide_duplicate_categories(series):
    return ['display: none' if val else '' for val in series.duplicated()]

# 应用样式并渲染显示
df.style.apply(hide_duplicate_categories, subset=['category'])

该方法仅调整显示效果,原始DataFrame的数据不会被修改。

关于groupby的说明

groupby核心作用是对分组后的字段做聚合操作(比如求和、拼接字符串),如果用它来实现这个显示需求,需要额外把聚合后的name和email拆分成多行,步骤反而繁琐,因此不推荐用groupby处理这类显示格式问题。

内容的提问来源于stack exchange,提问作者Jay-cob

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:48:09