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

如何在Pandas中实现多列重复值仅首行显示其余为空

实现DataFrame重复列值仅首行显示的方法

要实现将Name和idtag列的重复值仅在每组首行显示、其余对应单元格为空的效果,不能直接依赖set_index(该方法会保留索引层级的重复显示),可以通过标记重复行并清空对应单元格的方式实现:

步骤与代码示例

import pandas as pd

# 构造原始数据
data = {
    'Name': ['Apple', 'Apple', 'Apple', 'Grapes', 'Grapes', 'Grapes', 'Mango', 'Mango', 'Mango'],
    'idtag': [123, 123, 123, 875, 875, 875, 8894, 8894, 8894],
    'Size': ['Medium', 'Small', 'Small', 'Small', 'Small', 'Medium', 'Medium', 'Small', 'Small'],
    'frq': [20, 10, 5, 50, 60, 80, 30, 25, 20]
}
df = pd.DataFrame(data)

# 创建副本避免修改原数据
df_display = df.copy()

# 清空Name列的重复值
df_display.loc[df_display['Name'].duplicated(), 'Name'] = ''
# 清空idtag列的重复值
df_display.loc[df_display['idtag'].duplicated(), 'idtag'] = ''

# 输出格式化后的结果(不显示索引)
print(df_display.to_string(index=False))

输出效果

运行代码后会得到你需要的格式:

Name    idtag   Size    frq
Apple   123     Medium  20
                Small   10
                Small   5
Grapes  875     Small   50
                Small   60
                Medium  80
Mango   8894    Medium  30
                Small   25
                Small   20

说明

  • 使用duplicated()方法标记列中与上一行重复的元素,返回布尔值Series
  • 通过loc定位重复行,将对应单元格设为空字符串
  • 用to_string(index=False)输出时隐藏索引,保证格式符合要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 00:58:13