我有一个这样的数据框架-
TEST_NUM SITE_NUM RESULT TEST_FLG TEST_TXT UNITS LO_LIMIT HI_LIMIT
0 150 0 -0.4373 P Continuity_PPMU XSCI V -1 -0.3
1 150 1 -0.4383 P Continuity_PPMU XSCI V -1 -0.3
2 150 2 -0.4357 P Continuity_PPMU XSCI V -1 -0.3
3 150 3 -0.4370 P Continuity_PPMU XSCI V -1 -0.3
4 151 0 -0.4646 P Continuity_PPMU XSCO V -1 -0.3正如您所看到的,TEST_TXT中有重复的值。在TEST_TXT中大约有53个唯一值。
我想要得到TEST_TXT序列中的所有唯一值,保持顺序不变,比如['Continuity_PPMU XSCI','Continuity_PPMU XSCO',..etc]。
目前,当我使用np.unique()时,它正在改变顺序,尽管它提供了唯一的值。
我可以迭代数据帧,保留一个映射来检查它是否已经出现了一个值,如果没有,我可以附加到一个列表中。通过这种方式,我也可以获得相同顺序的唯一值,但我正在寻找一种更优雅的方式,更多的python方式(或pandas/numpy)。
谢谢!
发布于 2020-10-30 20:21:34
只需从numpy.unique()切换到pandas.Series.unique()就可以了。NumPy使用排序获得唯一值,而Pandas使用哈希表,并在文档中明确表示结果是按最初出现的顺序显示的。
所以就像这样:
df.TEST_TXT.unique()发布于 2020-10-30 20:22:57
您可以将drop_duplicates直接用于您的系列:
df['TEST_TXT'].drop_duplicates()会给你你想要的,维持秩序
https://stackoverflow.com/questions/64608180
复制相似问题