如何对Pandas列进行GroupBy操作并保留其他列的独立值?
实现DataFrame分组去重列值的格式化展示
原始DataFrame格式
Team Time App 1 10:00 xxxx 1 12:00 yyyy 1 12:00 zzzz 2 11:00 aaaa
目标格式
Team Time App 1 10:00 xxxx 12:00 yyyy zzzz 2 11:00 aaaa
解决方案
你用的melt函数是用于宽表转长表的,不适用当前场景。可以用pandas的duplicated()方法标记重复值,再将重复值替换为空字符串来实现需求:
import pandas as pd # 构造示例数据 data = { 'Team': [1, 1, 1, 2], 'Time': ['10:00', '12:00', '12:00', '11:00'], 'App': ['xxxx', 'yyyy', 'zzzz', 'aaaa'] } df = pd.DataFrame(data) # 处理Team列:仅保留每组第一个值,其余置空 df['Team'] = df['Team'].where(~df['Team'].duplicated(), '') # 处理Time列:仅保留同一Team下每组Time的第一个值,其余置空 df['Time'] = df['Time'].where(~df.duplicated(['Team', 'Time']), '') # 输出格式化后的结果 print(df.to_string(index=False))
运行后输出的结果将与目标格式完全一致,核心逻辑是通过duplicated()识别重复行,再用where()保留非重复值,把重复值替换为空字符串。
内容的提问来源于stack exchange,提问作者Eric Varghese
相关产品推荐
相关产品推荐

