Pandas基于多列识别重复行并替换指定列值的问题求解
问题修正方案
核心错误说明
你原来的代码存在3个核心问题:
- 仅对筛选出的重复行切片做修改,没有回写到原DataFrame的对应列,改动不会生效
replace方法使用逻辑错误,不需要传入整个v列做匹配,直接对目标列赋值即可- 赋值为字符串
"0",会改变v列的数值类型,不符合输出要求
正确实现代码
结合你给出的预期输出(保留KRO分组内v为13的行),需要将v列也加入判重子集,代码如下:
# 按x、y、c、v四列识别重复,保留每组第一次出现的行,其余重复行的v列设为0 df.loc[df.duplicated(subset=['x','y','c','v'], keep='first'), 'v'] = 0
如果你确实需要仅按x、y、c三列判重(即同一x、y、c下所有后续行的v都设为0),去掉subset参数中的'v'即可。
内容的提问来源于stack exchange,提问作者Tmiskiewicz
相关产品推荐
相关产品推荐

