如何在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
相关产品推荐
相关产品推荐

