示例#1
0
            def _series_binop_common_impl(self, other, level=None, fill_value=None, axis=0):
                left_index, right_index = self.index, other.index
                _fill_value = numpy.nan if fill_value_is_none == True else fill_value  # noqa
                if not (fill_value is None or numpy.isnan(fill_value)):
                    numpy_like.fillna(self._data, inplace=True, value=fill_value)
                    numpy_like.fillna(other._data, inplace=True, value=fill_value)
                # check if indexes are equal and series don't have to be aligned
                if sdc_check_indexes_equal(left_index, right_index):
                    result_data = numpy.empty(len(self._data), dtype=numpy.float64)
                    result_data[:] = self._data + other._data

                    if none_or_numeric_indexes == True:  # noqa
                        result_index = numpy_like.astype(left_index, numba_index_common_dtype)
                    else:
                        result_index = self._index

                    return pandas.Series(result_data, index=result_index)

                # TODO: replace below with core join(how='outer', return_indexers=True) when implemented
                joined_index, left_indexer, right_indexer = sdc_join_series_indexes(left_index, right_index)
                result_size = len(joined_index)
                left_values = numpy.empty(result_size, dtype=numpy.float64)
                right_values = numpy.empty(result_size, dtype=numpy.float64)
                for i in range(result_size):
                    left_pos, right_pos = left_indexer[i], right_indexer[i]
                    left_values[i] = self._data[left_pos] if left_pos != -1 else _fill_value
                    right_values[i] = other._data[right_pos] if right_pos != -1 else _fill_value
                result_data = left_values + right_values
                return pandas.Series(result_data, joined_index)
示例#2
0
            def _series_binop_none_indexes_impl(self,
                                                other,
                                                level=None,
                                                fill_value=None,
                                                axis=0):
                numpy_like.fillna(self._data, inplace=True, value=fill_value)
                numpy_like.fillna(other._data, inplace=True, value=fill_value)

                if (len(self._data) == len(other._data)):
                    result_data = numpy_like.astype(self._data, numpy.float64)
                    result_data = result_data + other._data
                    return pandas.Series(result_data)
                else:
                    left_size, right_size = len(self._data), len(other._data)
                    min_data_size = min(left_size, right_size)
                    max_data_size = max(left_size, right_size)
                    result_data = numpy.empty(max_data_size,
                                              dtype=numpy.float64)
                    _fill_value = numpy.nan if fill_value_is_none == True else fill_value  # noqa
                    if (left_size == min_data_size):
                        result_data[:min_data_size] = self._data
                        for i in range(min_data_size, len(result_data)):
                            result_data[i] = _fill_value
                        result_data = result_data + other._data
                    else:
                        result_data[:min_data_size] = other._data
                        for i in range(min_data_size, len(result_data)):
                            result_data[i] = _fill_value
                        result_data = self._data + result_data

                    return pandas.Series(result_data)
示例#3
0
 def _series_comp_binop_none_indexes_impl(self, other, level=None, fill_value=None, axis=0):
     if not (fill_value is None or numpy.isnan(fill_value)):
         numpy_like.fillna(self._data, inplace=True, value=fill_value)
         numpy_like.fillna(other._data, inplace=True, value=fill_value)
     left_size, right_size = len(self._data), len(other._data)
     if (left_size == right_size):
         return pandas.Series(self._data < other._data)
     else:
         raise ValueError("Can only compare identically-labeled Series objects")
示例#4
0
 def _series_comp_binop_scalar_impl(self, other, level=None, fill_value=None, axis=0):
     if self_is_series == True:  # noqa
         if not (fill_value is None or numpy.isnan(fill_value)):
             numpy_like.fillna(self._data, inplace=True, value=fill_value)
         return pandas.Series(self._data < other, index=self._index, name=self._name)
     else:
         if not (fill_value is None or numpy.isnan(fill_value)):
             numpy_like.fillna(other._data, inplace=True, value=fill_value)
         return pandas.Series(self < other._data, index=other._index, name=other._name)
示例#5
0
 def _series_binop_scalar_impl(self, other, level=None, fill_value=None, axis=0):
     if self_is_series == True:  # noqa
         if not (fill_value is None or numpy.isnan(fill_value)):
             numpy_like.fillna(self._data, inplace=True, value=fill_value)
         result_data = numpy.empty(len(self._data), dtype=numpy.float64)
         result_data[:] = self._data + numpy.float64(other)
         return pandas.Series(result_data, index=self._index, name=self._name)
     else:
         if not (fill_value is None or numpy.isnan(fill_value)):
             numpy_like.fillna(other._data, inplace=True, value=fill_value)
         result_data = numpy.empty(len(other._data), dtype=numpy.float64)
         result_data[:] = numpy.float64(self) + other._data
         return pandas.Series(result_data, index=other._index, name=other._name)
示例#6
0
            def _series_comp_binop_common_impl(self, other, level=None, fill_value=None, axis=0):
                if not (fill_value is None or numpy.isnan(fill_value)):
                    numpy_like.fillna(self._data, inplace=True, value=fill_value)
                    numpy_like.fillna(other._data, inplace=True, value=fill_value)
                left_index, right_index = self.index, other.index

                if sdc_check_indexes_equal(left_index, right_index):
                    if none_or_numeric_indexes == True:  # noqa
                        new_index = numpy_like.astype(left_index, numba_index_common_dtype)
                    else:
                        new_index = self._index
                    return pandas.Series(self._data < other._data,
                                         new_index)
                else:
                    raise ValueError("Can only compare identically-labeled Series objects")
示例#7
0
        def _series_comp_binop_scalar_impl(self, other, fill_value=None):

            _self = numpy_like.fillna(self._data,
                                      inplace=False,
                                      value=fill_value)
            return pandas.Series(_self < other,
                                 index=self._index,
                                 name=self._name)
示例#8
0
            def _series_comp_binop_common_impl(self,
                                               other,
                                               level=None,
                                               fill_value=None,
                                               axis=0):
                numpy_like.fillna(self._data, inplace=True, value=fill_value)
                numpy_like.fillna(other._data, inplace=True, value=fill_value)
                left_index, right_index = self.index, other.index

                if (left_index is right_index
                        or numpy_like.array_equal(left_index, right_index)):
                    if index_dtypes_match == False:  # noqa
                        new_index = numpy_like.astype(
                            left_index, numba_index_common_dtype)
                    else:
                        new_index = left_index.values if left_index_is_range == True else left_index  # noqa
                    return pandas.Series(self._data < other._data, new_index)
                else:
                    raise ValueError(
                        "Can only compare identically-labeled Series objects")
示例#9
0
            def _series_binop_common_impl(self,
                                          other,
                                          level=None,
                                          fill_value=None,
                                          axis=0):
                left_index, right_index = self.index, other.index
                numpy_like.fillna(self._data, inplace=True, value=fill_value)
                numpy_like.fillna(other._data, inplace=True, value=fill_value)
                if check_index_equal == True:  # noqa
                    equal_indexes = numpy_like.array_equal(
                        left_index, right_index)
                else:
                    equal_indexes = False

                if (left_index is right_index or equal_indexes):
                    result_data = numpy.empty(len(self._data),
                                              dtype=numpy.float64)
                    result_data[:] = self._data + other._data
                    if index_dtypes_match == False:  # noqa
                        result_index = numpy_like.astype(
                            left_index, numba_index_common_dtype)
                    else:
                        result_index = left_index.values if left_index_is_range == True else left_index  # noqa

                    return pandas.Series(result_data, index=result_index)

                # TODO: replace below with core join(how='outer', return_indexers=True) when implemented
                joined_index, left_indexer, right_indexer = sdc_join_series_indexes(
                    left_index, right_index)
                result_size = len(joined_index)
                left_values = numpy.empty(result_size, dtype=numpy.float64)
                right_values = numpy.empty(result_size, dtype=numpy.float64)
                _fill_value = numpy.nan if fill_value_is_none == True else fill_value  # noqa
                for i in range(result_size):
                    left_pos, right_pos = left_indexer[i], right_indexer[i]
                    left_values[i] = self._data[
                        left_pos] if left_pos != -1 else _fill_value
                    right_values[i] = other._data[
                        right_pos] if right_pos != -1 else _fill_value
                result_data = left_values + right_values
                return pandas.Series(result_data, joined_index)
        def sdc_binop_impl(self, other, fill_value=None):

            series = self if self_is_series == True else other  # noqa
            result_data = numpy.empty(len(series._data), dtype=numpy.float64)
            series_data = numpy_like.fillna(series._data, inplace=False, value=fill_value)
            if self_is_series == True:  # noqa
                _self, _other = series_data, numpy.float64(other)
            else:
                _self, _other = numpy.float64(self), series_data

            result_data[:] = _self + _other
            return pandas.Series(result_data, index=series._index, name=series._name)
示例#11
0
 def sdc_impl(S, value):
     str_arr = S.values
     return numpy_like.fillna(str_arr, inplace=False, value=value)
示例#12
0
 def sdc_impl(a, value):
     return numpy_like.fillna(a, inplace=True, value=value)