如何保留DataFrame中client_id列的重复项(排除首次出现项)
问题解决:保留DataFrame中client_id的所有重复项(排除首次出现行)
错误原因分析
你之前的实现逻辑存在问题:将client_id转为列表后与原列比较,得到的结果全是False(因为每个元素和自身对应位置相等),idxmax()无法定位有效索引,后续操作自然触发Lengths must be equal的报错。
正确解决方案
Pandas内置的duplicated()方法完美匹配你的需求——该方法默认会标记除首次出现外的所有重复行,直接筛选这些标记为True的行即可:
# 筛选所有非首次出现的重复行 result_df = df[df['client_id'].duplicated()]
执行后得到的结果完全符合你的预期:
| client_id | payment_date | value | |
|---|---|---|---|
| 3 | 141424 | 2021-06-01 | 150.000000 |
| 5 | 168226 | 2021-06-02 | 115.000000 |
| 6 | 067858 | 2021-06-05 | 143.000000 |
| 7 | 151525 | 2021-06-07 | 82.000000 |
扩展说明
如果需要保留最后一次出现的行、排除之前的重复项,可给duplicated()传入参数keep='last',示例:
# 保留最后一次出现的行,排除之前的重复项 result_df = df[df['client_id'].duplicated(keep='last')]
内容的提问来源于stack exchange,提问作者tiago_santos_23
相关产品推荐
相关产品推荐

