基于Pandas DataFrame:用“same”替换重复评论并调整ID
Pandas重复评论处理与ID重置方案
需求说明
- 按
Key字段分组,每组内仅保留第一条评论的原始内容,后续重复评论替换为"same" - 同一
Key分组内的id字段从1开始重新递增编号
输入数据代码
import pandas as pd df = {'Key': ['111', '111','111', '222*1','222*2', '333*1','333*2', '333*3'], 'id' : ['', '','', '1','2', '1','2', '3'], 'comment': ['wrong sentence', 'wrong sentence','wrong sentence', 'M','M', 'F','F', 'F']} df = pd.DataFrame(df)
处理代码
# 按Key分组,重置ID为从1开始的递增序列 df['id'] = df.groupby('Key').cumcount() + 1 # 处理重复评论:仅保留每组第一条的原内容,其余替换为"same" df['comment'] = df.groupby('Key')['comment'].transform( lambda x: x.where((x == x.iloc[0]) & (x.index == x.index[0]), 'same') )
代码解释
- ID重置:利用
groupby('Key').cumcount()获取每组内的行序号(从0起始),加1后得到从1开始的连续编号,直接覆盖原id字段。 - 评论去重处理:通过分组转换操作,对每组的评论进行判断:
- 仅保留组内第一条评论的原始内容
- 组内后续所有重复评论统一替换为
"same"
处理后输出
执行代码后打印df,结果如下:
Key id comment 0 111 1 wrong sentence 1 111 2 same 2 111 3 same 3 222*1 1 M 4 222*2 1 M 5 333*1 1 F 6 333*2 1 F 7 333*3 1 F
内容的提问来源于stack exchange,提问作者AAA
相关产品推荐
相关产品推荐

