Pandas DataFrame如何实现类groupby的非聚合分组展示效果
实现方案
核心逻辑是识别每个id分组的首行,将同组其余行的id值替换为空字符串,该处理仅适合展示场景使用(处理后id列会转为字符串类型,不适合后续做关联、数值计算类操作)。
完整代码
import pandas as pd # 构造原始示例DataFrame d = {'id': ['101', '101', '101', '105', '105'], 'qty': [10, 15, 20, 50, 55], } df31 = pd.DataFrame(data=d) # 核心处理:非分组首行的id位置置空 df31['id'] = df31['id'].where(~df31['id'].duplicated(keep='first'), '')
处理后输出效果
id qty 0 101 10 1 15 2 20 3 105 50 4 55
逻辑说明
df31['id'].duplicated(keep='first'):对id列做重复标记,同id的第一行标记为False(非重复项),后续所有同id的行全部标记为True(重复项)where(判断条件, 替换值):满足判断条件的位置保留原始值,不满足的位置替换为指定的空字符串- 条件前加
~是做取反操作,即保留分组首行的原始id值,其余重复行替换为空。
内容的提问来源于stack exchange,提问作者T_Ner
相关产品推荐
相关产品推荐

