代码之家  ›  专栏  ›  技术社区  ›  DrAl

numpy/pandas:删除顺序重复值(相当于不排序的bash uniq)[重复]

  •  3
  • DrAl  · 技术社区  · 6 年前

    这个问题已经有了答案:

    对于熊猫系列(或numpy数组),如下所示:

    import pandas as pd
    myseries = pd.Series([1, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 3, 3, 2, 2, 3, 3, 1])
    

    有没有一种很好的方法可以删除顺序重复项,就像Unix一样 uniq 工具行吗?麻木/熊猫 unique() 熊猫 drop_duplicates 函数删除所有重复项(如unix的 | sort | uniq ,但我不想这样:

    >>> print(myseries.unique())
    [1 2 3 4]
    

    我想要这个:

    >>> print(myseries.my_mystery_function())
    [1, 2, 3, 4, 3, 2, 3, 1]
    
    3 回复  |  直到 6 年前
        1
  •  6
  •   jezrael    6 年前

    ne != shift Series boolean indexing

    myseries = myseries[myseries.ne(myseries.shift())].tolist()
    print (myseries)
    [1, 2, 3, 4, 3, 2, 3, 1]
    

    Divakar

        2
  •  4
  •   Divakar    6 年前

    slicing

    In [62]: a = myseries.values
    
    In [63]: a[np.r_[True,a[:-1]!= a[1:]]]
    Out[63]: array([1, 2, 3, 4, 3, 2, 3, 1])
    
        3
  •  0
  •   U13-Forward    6 年前

    !=

    print(myseries[myseries!=myseries.shift()].tolist())
    

    [1, 2, 3, 4, 3, 2, 3, 1]