今天分享一个去重在项目中的小应用
主要有三列:时间,ID, 等级
重复情况:可能同一天同一个ID对应两个不同的等级
目标是:找出重复情况对应的时间和ID
# 对合并后的数据进行处理
data_range.drop_duplicates(inplace=True) # 对档位数据整体去重,即将同一天同一ID等级相同的去重
print(data_range.info()) # 去重后,148173
# 再来看看同一天同一ID中存在不同等级的情况
data = data_range[['时间', 'ID']] # 先把等级拿掉
df = data[data.duplicated(subset=['时间', 'ID']) == True] # 看看同一天同一户不同档位的情况有多少--->2345个
print(df) # 148173-2345=145828 数据刚刚好
# 将重复数据(等级不同,时间和ID重复的数据)中的时间和ID变为一个元组
df_tuples = [tuple(xi) for xi in df.values]
for i, j in df_tuples:
print(i, j)
b = np.int64(j) # 将int类型 转成 numpy.int64类型
data_range.drop(
index=data_range[(data_range['时间'] == i) & (data_range['ID'] == b) & (data_range['等级'] == '未分配等级')].index,
inplace=True)
print(data_range)
data1 = data_range.drop_duplicates(subset=['时间', 'ID'], keep='first') # 去重