如何去除pandas列中存储的numpy数组内的重复元素
问题原因分析
np.unique方法默认会对去重后的元素执行升序排序,无法保留元素在原数组中的出现顺序,和示例要求的输出顺序不匹配。ddpe方法的入参是numpy数组类型,直接传入dict.fromkeys会将整个数组识别为单个键,无法实现逐元素去重的效果。
正确实现方案
方案1:利用字典特性保留原顺序(Python3.7+通用,推荐)
改写去重函数,先将numpy数组转为普通列表再执行去重:
def ddpe(a): # 先转numpy数组为列表,再用字典去重保留元素首次出现顺序 return list(dict.fromkeys(a.tolist())) # 生成新列 df['new_column'] = df['B'].apply(ddpe)
方案2:基于numpy实现保留顺序的去重
如果希望用numpy实现,可通过返回索引的方式控制输出顺序:
def u_value(a): vals, idx = np.unique(a, return_index=True) # 按元素首次出现的索引排序,保留原顺序 return vals[np.argsort(idx)].tolist() # 生成新列 df['new_column'] = df['B'].apply(u_value)
内容的提问来源于stack exchange,提问作者Cuckoo
相关产品推荐
相关产品推荐

