예제 #1
0
파일: api.py 프로젝트: vishalbelsare/hpat
def init_series(typingctx, data, index=None, name=None):
    """Create a Series with provided data, index and name values.
    Used as a single constructor for Series and assigning its data, so that
    optimization passes can look for init_series() to see if underlying
    data has changed, and get the array variables from init_series() args if
    not changed.
    """

    index = types.none if index is None else index
    name = types.none if name is None else name
    is_named = False if name is types.none else True

    def codegen(context, builder, signature, args):
        data_val, index_val, name_val = args
        # create series struct and store values
        series = cgutils.create_struct_proxy(
            signature.return_type)(context, builder)
        series.data = data_val
        series.index = index_val
        if is_named:
            if isinstance(name, types.StringLiteral):
                series.name = numba.cpython.unicode.make_string_from_constant(
                    context, builder, string_type, name.literal_value)
            else:
                series.name = name_val

        # increase refcount of stored values
        if context.enable_nrt:
            context.nrt.incref(builder, signature.args[0], data_val)
            context.nrt.incref(builder, signature.args[1], index_val)
            if is_named:
                context.nrt.incref(builder, signature.args[2], name_val)

        return series._getvalue()

    dtype = data.dtype
    # XXX pd.DataFrame() calls init_series for even Series since it's untyped
    data = if_series_to_array_type(data)
    ret_typ = SeriesType(dtype, data, index, is_named)
    sig = signature(ret_typ, data, index, name)
    return sig, codegen
예제 #2
0
파일: boxing.py 프로젝트: KsanaKozlova/sdc
def typeof_pd_series(val, c):
    index_type = _infer_index_type(val.index)
    is_named = val.name is not None
    return SeriesType(
        _infer_series_dtype(val), index=index_type, is_named=is_named)
예제 #3
0
def typeof_pd_index(val, c):
    if len(val) > 0 and isinstance(val[0], datetime.date):
        return SeriesType(datetime_date_type)
    else:
        raise NotImplementedError("unsupported pd.Index type")
예제 #4
0
 def generic_resolve(self, df, attr):
     if attr in df.columns:
         ind = df.columns.index(attr)
         arr_typ = df.data[ind]
         return SeriesType(arr_typ.dtype, arr_typ, df.index, True)
예제 #5
0
def resolve_date_field(self, ary):
    # TODO: return Int64Index
    return SeriesType(types.int64)