Getting a list of indices where pandas boolean series is True

前端 未结 2 423
栀梦
栀梦 2020-12-05 17:36

I have a pandas series with boolean entries. I would like to get a list of indices where the values are True.

For example the input pd.Series([Tr

2条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-05 18:05

    Using Boolean Indexing

    >>> s = pd.Series([True, False, True, True, False, False, False, True])
    >>> s[s].index
    Int64Index([0, 2, 3, 7], dtype='int64')
    

    If need a np.array object, get the .values

    >>> s[s].index.values
    array([0, 2, 3, 7])
    

    Using np.nonzero

    >>> np.nonzero(s)
    (array([0, 2, 3, 7]),)
    

    Using np.flatnonzero

    >>> np.flatnonzero(s)
    array([0, 2, 3, 7])
    

    Using np.where

    >>> np.where(s)[0]
    array([0, 2, 3, 7])
    

    Using np.argwhere

    >>> np.argwhere(s).ravel()
    array([0, 2, 3, 7])
    

    Using pd.Series.index

    >>> s.index[s]
    array([0, 2, 3, 7])
    

    Using python's built-in filter

    >>> [*filter(s.get, s.index)]
    [0, 2, 3, 7]
    

    Using list comprehension

    >>> [i for i in s.index if s[i]]
    [0, 2, 3, 7]
    

提交回复
热议问题