Pandas如何实现单行多值赋值,合并重复用户列仅展示差异化内容
实现方案
完整代码
import pandas as pd # 构造示例数据,可替换为你自己的DataFrame data = { 'USER_ID': [1, 1], 'USER_NAME': ['Ahmad Anis', 'Ahmad Anis'], 'USER_REPUTATION': [123, 123], 'NUMBER_OF_ANSWERS': [2, 2], 'NUMBER_OF_QUESTIONS': [3, 3], 'BADGE_NAME': ['Topper', 'programmer'], 'BADGE_CAT': ['HTML', 'Random'] } df = pd.DataFrame(data) # 定义需要批量隐藏重复值的列 cols_to_process = ['USER_ID', 'USER_NAME', 'USER_REPUTATION', 'NUMBER_OF_ANSWERS', 'NUMBER_OF_QUESTIONS'] # 核心逻辑:同组内非首行的指定列替换为空字符串 df[cols_to_process] = df[cols_to_process].mask( df.groupby(cols_to_process).cumcount() > 0, '' ) # 输出markdown格式表格验证结果 print(df.to_markdown())
逻辑说明
groupby(cols_to_process)会把所有指定列值完全一致的行归为同一组cumcount()会给每组内的行按顺序生成从0开始的编号mask()方法会将满足条件(编号>0,即组内非首行)的单元格替换为空字符串,实现重复内容隐藏的效果- 如果业务上只需要按USER_ID维度去重,将
groupby(cols_to_process)改为groupby('USER_ID')即可
内容的提问来源于stack exchange,提问作者Ahmad Anis
相关产品推荐
相关产品推荐

