You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandas基于userID列对JSON数据去重仍有重复如何解决?

解决方案

你遇到的去重失效问题核心原因大概率是userID列存在逻辑值相同但实际判定值不同的情况,比如数据类型不一致、存在前后空格/不可见特殊字符等。drop_duplicates是严格等值判定,只要两个值的类型、字符内容有细微差异,就会被判定为不同值,和其他字段有没有出现userID完全无关。

修复后的完整代码如下:

import pandas as pd

# 读取原始数据
data3 = pd.read_json("./sept-count/all_data.json")

# 第一步:清洗userID列,统一格式避免判定偏差
# 1. 统一转为字符串类型 2. 去除首尾空白/不可见字符 3. 空值统一处理
data3['userID'] = data3['userID'].astype(str).str.strip().replace('', pd.NA)

# 第二步:按userID去重,仅保留首次出现的记录
# 不需要提前排序,排序会打乱原始顺序,keep='first'默认按原始顺序保留第一条
data_unique = data3.drop_duplicates(subset=['userID'], keep='first').reset_index(drop=True)

# 验证去重结果:两个输出值相等即代表去重成功
print(f"去重后总行数:{len(data_unique)}")
print(f"userID唯一值数量:{data_unique['userID'].nunique()}")

# 保存结果
data_unique.to_json("./sept-count/unique_data.json", orient='records', force_ascii=False)

如果验证后仍存在重复,可以用以下代码定位异常值:

# 找出仍然重复的userID
dup_ids = data_unique[data_unique.duplicated(subset=['userID'], keep=False)]['userID'].unique()
print("存在重复的userID:", dup_ids)
# 输出对应userID的原始记录排查差异
print(data3[data3['userID'] == dup_ids[0]])

内容的提问来源于stack exchange,提问作者Nayden Van

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 03:45:02