示例#1
0
 def notna(self) -> 'Series':
     '''
     Return a same-indexed, Boolean Series indicating which values are NaN or None.
     '''
     values = np.logical_not(_isna(self.values))
     values.flags.writeable = False
     return self.__class__(values, index=self._index)
示例#2
0
    def fillna(self, value) -> 'Series':
        '''Return a new Series after replacing NaN or None values with the supplied value.
        '''
        sel = _isna(self.values)
        if not np.any(sel):
            return self

        if isinstance(value, np.ndarray):
            raise Exception('cannot assign an array to fillna')
        else:
            value_dtype = np.array(value).dtype

        assigned_dtype = _resolve_dtype(value_dtype, self.values.dtype)

        if self.values.dtype == assigned_dtype:
            assigned = self.values.copy()
        else:
            assigned = self.values.astype(assigned_dtype)

        assigned[sel] = value
        assigned.flags.writeable = False

        return self.__class__(assigned,
                index=self._index,
                name=self._name)
示例#3
0
 def isna(self) -> 'Series':
     '''
     Return a same-indexed, Boolean Series indicating which values are NaN or None.
     '''
     # consider returning self if not values.any()?
     values = _isna(self.values)
     values.flags.writeable = False
     return self.__class__(values, index=self._index)
示例#4
0
    def dropna(self) -> 'Series':
        '''
        Return a new Series after removing values of NaN or None.
        '''
        sel = np.logical_not(_isna(self.values))
        if not np.any(sel):
            return self

        values = self.values[sel]
        values.flags.writeable = False
        return self.__class__(values, index=self._index.loc[sel])
示例#5
0
    def test_isna_array_b(self):

        a1 = np.array([[1, 2], [3, 4]])
        a2 = np.array([[False, True, False], [False, True, False]])
        a3 = np.array([['b', 'c', 'd'], ['b', 'c', 'd']])
        a4 = np.array([[2.3, 3.2, np.nan], [2.3, 3.2, np.nan]])
        a5 = np.array(
            [['test', 'test again', np.nan], ['test', 'test again', np.nan]],
            dtype=object)
        a6 = np.array([[2.3, 5.4, np.nan], [2.3, 5.4, np.nan]],
                      dtype='float32')

        self.assertEqual(_isna(a1).tolist(), [[False, False], [False, False]])

        self.assertEqual(
            _isna(a2).tolist(), [[False, False, False], [False, False, False]])

        self.assertEqual(
            _isna(a3).tolist(), [[False, False, False], [False, False, False]])

        self.assertEqual(
            _isna(a4).tolist(), [[False, False, True], [False, False, True]])

        self.assertEqual(
            _isna(a5).tolist(), [[False, False, True], [False, False, True]])

        self.assertEqual(
            _isna(a6).tolist(), [[False, False, True], [False, False, True]])
示例#6
0
    def dropna(self) -> 'Series':
        '''
        Return a new Series after removing values of NaN or None.
        '''
        # get positions that we want to keep
        sel = np.logical_not(_isna(self.values))
        if not np.any(sel):
            return self.__class__(())

        values = self.values[sel]
        values.flags.writeable = False

        return self.__class__(values,
                index=self._index.loc[sel],
                name=self._name)
示例#7
0
    def test_isna_array_a(self):

        a1 = np.array([1, 2, 3])
        a2 = np.array([False, True, False])
        a3 = np.array(['b', 'c', 'd'])
        a4 = np.array([2.3, 3.2])
        a5 = np.array(['test', 'test again'], dtype='S')
        a6 = np.array([2.3, 5.4], dtype='float32')

        self.assertEqual(_isna(a1).tolist(), [False, False, False])
        self.assertEqual(_isna(a2).tolist(), [False, False, False])
        self.assertEqual(_isna(a3).tolist(), [False, False, False])
        self.assertEqual(_isna(a4).tolist(), [False, False])
        self.assertEqual(_isna(a5).tolist(), [False, False])
        self.assertEqual(_isna(a6).tolist(), [False, False])

        a1 = np.array([1, 2, 3, None])
        a2 = np.array([False, True, False, None])
        a3 = np.array(['b', 'c', 'd', None])
        a4 = np.array([2.3, 3.2, None])
        a5 = np.array(['test', 'test again', None])
        a6 = np.array([2.3, 5.4, None])

        self.assertEqual(_isna(a1).tolist(), [False, False, False, True])
        self.assertEqual(_isna(a2).tolist(), [False, False, False, True])
        self.assertEqual(_isna(a3).tolist(), [False, False, False, True])
        self.assertEqual(_isna(a4).tolist(), [False, False, True])
        self.assertEqual(_isna(a5).tolist(), [False, False, True])
        self.assertEqual(_isna(a6).tolist(), [False, False, True])

        a1 = np.array([1, 2, 3, np.nan])
        a2 = np.array([False, True, False, np.nan])
        a3 = np.array(['b', 'c', 'd', np.nan], dtype=object)
        a4 = np.array([2.3, 3.2, np.nan], dtype=object)
        a5 = np.array(['test', 'test again', np.nan], dtype=object)
        a6 = np.array([2.3, 5.4, np.nan], dtype='float32')

        self.assertEqual(_isna(a1).tolist(), [False, False, False, True])
        self.assertEqual(_isna(a2).tolist(), [False, False, False, True])
        self.assertEqual(_isna(a3).tolist(), [False, False, False, True])
        self.assertEqual(_isna(a4).tolist(), [False, False, True])
        self.assertEqual(_isna(a5).tolist(), [False, False, True])
        self.assertEqual(_isna(a6).tolist(), [False, False, True])