如何按Entidad分组修改DataFrame中重复的Cuenta列值?
解决方案
要实现按Entidad分组后,Cuenta列仅保留每个值的首次出现、后续重复项置为空的效果,可通过pandas的分组转换操作完成:
代码实现
import pandas as pd # 示例DataFrame df = pd.DataFrame({ "Entidad": ["A","A","A","A","A","A","A","B","B","B","B","B"], "Cuenta": ["Surco","Lima","Miraflores","Lima","SMP","Surco","Lima","Surco","Lima","Miraflores","Lima","SMP"], "Valor": [12,14,11,7,5,4,22,11,34,21,17,25], }) # 分组处理Cuenta列:仅保留每个分组内首次出现的Cuenta值,重复项置空 df['Cuenta'] = df.groupby('Entidad')['Cuenta'].transform( lambda x: x.where(~x.duplicated(keep='first'), '') ) print(df)
输出结果
Entidad Cuenta Valor 0 A Surco 12 1 A Lima 14 2 A Miraflores 11 3 A 7 4 A SMP 5 5 A 4 6 A 22 7 B Surco 11 8 B Lima 34 9 B Miraflores 21 10 B 17 11 B SMP 25
逻辑说明
groupby('Entidad'):按Entidad字段分组,确保每个分组内独立处理重复值transform():保证处理后返回的序列与原DataFrame长度一致,不破坏原有行结构x.duplicated(keep='first'):标记分组内除首次出现外的所有重复项为True,取反~后,where()方法会保留首次出现的原值,重复项替换为空字符串
内容的提问来源于stack exchange,提问作者Edu2694
相关产品推荐
相关产品推荐

