Ejemplo n.º 1
0
    def generic(self, args, kws):
        assert not kws
        df, values, index, columns, aggfunc, _pivot_values = args

        if not (isinstance(values, types.StringLiteral)
                and isinstance(index, types.StringLiteral)
                and isinstance(columns, types.StringLiteral)):
            raise ValueError("pivot_table() only support string constants for"
                             "'values', 'index' and 'columns' arguments")

        values = values.literal_value
        index = index.literal_value
        columns = columns.literal_value

        # get output data type
        data = df.data[df.columns.index(values)]
        func = get_agg_func(None, aggfunc.literal_value, None)
        f_ir = numba.ir_utils.get_ir_of_code(
            {
                'np': np,
                'numba': numba,
                'hpat': hpat
            }, func.__code__)
        _, out_dtype, _ = numba.typed_passes.type_inference_stage(
            self.context, f_ir, (data, ), None)
        out_arr_typ = _get_series_array_type(out_dtype)

        pivot_vals = _pivot_values.meta
        n_vals = len(pivot_vals)
        out_df = DataFrameType((out_arr_typ, ) * n_vals, None,
                               tuple(pivot_vals))

        return signature(out_df, *args)
Ejemplo n.º 2
0
 def resolve_std(self, grp, args, kws):
     func = get_agg_func(None, 'std', None)
     return self._get_agg_typ(grp, args, func.__code__)