如何按出现顺序获取pandas Series的唯一值(DataFrame场景)
嘿,这个需求太常见啦!不用费劲写遍历和映射表,Pandas本身就有优雅的方法帮你按出现顺序获取唯一值,完全避开np.unique()打乱顺序的问题~
下面给你两个最常用的方案:
方案1:直接用Series.unique()
从Pandas 0.15.0版本开始,Series.unique()就会严格保留元素第一次出现的顺序,返回的是numpy数组,转成列表只需要加个.tolist()就行。
代码示例:
# 获取TEST_TXT列的有序唯一值列表 ordered_unique = df['TEST_TXT'].unique().tolist() print(ordered_unique) # 输出:['Continuity_PPMU XSCI', 'Continuity_PPMU XSCO', …]
方案2:用drop_duplicates()
这个方法返回的是一个去重后的Series(同样保留首次出现顺序),如果之后你还需要对这些唯一值做Pandas相关操作(比如关联其他数据、筛选),这个方法会更灵活,转列表同样用.tolist():
ordered_unique = df['TEST_TXT'].drop_duplicates().tolist()
为什么不用np.unique()?
np.unique()的底层是先排序再去重,所以会打乱原始顺序,而上面两个Pandas方法都是基于首次出现的位置来保留唯一值,完美符合你的需求。
如果你的Pandas版本特别旧(低于0.15.0),Series.unique()可能不保留顺序,那优先用drop_duplicates()就好,这个方法在旧版本里也是按顺序去重的。
内容的提问来源于stack exchange,提问作者Kartik Mehra
相关产品推荐
相关产品推荐

