Beispiel #1
0
    def fromRecords(cls, data, major_field, minor_field,
                    exclude=None):
        """
        Create LongPanel from DataFrame or record / structured ndarray
        object

        Parameters
        ----------
        data : DataFrame, structured or record array, or dict
        major_field : string
        minor_field : string
            Name of field
        exclude : list-like, default None

        Returns
        -------
        LongPanel
        """
        if isinstance(data, np.ndarray):
            # Dtype when you have data
            if not issubclass(data.dtype.type, np.void):
                raise ValueError('Input was not a structured array!')

            columns = data.dtype.names
            data = dict((k, data[k]) for k in columns)
        elif isinstance(data, DataFrame):
            data = data._series.copy()
        elif isinstance(data, dict):
            # otherwise will pop columns out of original
            data = data.copy()

        if exclude is None:
            exclude = set()
        else:
            exclude = set(exclude)

        for col in exclude:
            del data[col]

        major = Factor.fromarray(data.pop(major_field))
        minor = Factor.fromarray(data.pop(minor_field))
        index = MultiIndex(levels=[major.levels, minor.levels],
                           labels=[major.labels, minor.labels])
        return LongPanel(data, index=index)
Beispiel #2
0
 def setUp(self):
     self.factor = Factor.fromarray(['a', 'b', 'b', 'a',
                                     'a', 'c', 'c', 'c'])