def from_dict(cls, data, intersect=False, dtype=float): """ Construct WidePanel from dict of DataFrame objects Parameters ---------- data : dict {field : DataFrame} intersect : boolean Returns ------- WidePanel """ data, index, columns = _homogenize(data, intersect=intersect, dtype=dtype) items = Index(sorted(data.keys())) axes = [items, index, columns] reshaped_data = {} for k, v in data.iteritems(): values = v.values shape = values.shape reshaped_data[k] = values.reshape((1,) + shape) blocks = form_blocks(reshaped_data, axes) mgr = BlockManager(blocks, axes).consolidate() return WidePanel(mgr, items, index, columns)
def _init_dict(self, data, axes, dtype=None): items = axes[0] # prefilter if items passed if items is not None: items = _ensure_index(items) data = dict((k, v) for k, v in data.iteritems() if k in items) else: items = Index(_try_sort(data.keys())) # figure out the index, if necessary if index is None: index = extract_index(data) # don't force copy because getting jammed in an ndarray anyway # homogenized = _homogenize(data, index, columns, dtype) data, index, columns = _homogenize(data, intersect=intersect) # segregates dtypes and forms blocks matching to columns blocks = form_blocks(homogenized, index, columns) # consolidate for now mgr = BlockManager(blocks, [columns, index]) return mgr.consolidate()
def _init_dict(self, data, axes, dtype=None): items, major, minor = axes # prefilter if items passed if items is not None: items = _ensure_index(items) data = dict((k, v) for k, v in data.iteritems() if k in items) else: items = Index(_try_sort(data.keys())) for k, v in data.iteritems(): if not isinstance(v, DataFrame): data[k] = DataFrame(v) if major is None: indexes = [v.index for v in data.values()] major = _union_indexes(indexes) if minor is None: indexes = [v.columns for v in data.values()] minor = _union_indexes(indexes) axes = [items, major, minor] reshaped_data = data.copy() # shallow # homogenize item_shape = (1, len(major), len(minor)) for k in items: if k not in data: values = np.empty(item_shape, dtype=dtype) values.fill(np.nan) reshaped_data[k] = values else: v = data[k] v = v.reindex(index=major, columns=minor, copy=False) if dtype is not None: v = v.astype(dtype) values = v.values shape = values.shape reshaped_data[k] = values.reshape((1,) + shape) # segregates dtypes and forms blocks matching to columns blocks = form_blocks(reshaped_data, axes) mgr = BlockManager(blocks, axes).consolidate() return mgr
def _init_dict(self, data, axes, dtype=None): items, major, minor = axes # prefilter if items passed if items is not None: items = _ensure_index(items) data = dict((k, v) for k, v in data.iteritems() if k in items) else: items = Index(_try_sort(data.keys())) for k, v in data.iteritems(): if isinstance(v, dict): data[k] = DataFrame(v) if major is None: major = _extract_axis(data, axis=0) if minor is None: minor = _extract_axis(data, axis=1) axes = [items, major, minor] reshaped_data = data.copy() # shallow item_shape = len(major), len(minor) for item in items: v = values = data.get(item) if v is None: values = np.empty(item_shape, dtype=dtype) values.fill(np.nan) elif isinstance(v, DataFrame): v = v.reindex(index=major, columns=minor, copy=False) if dtype is not None: v = v.astype(dtype) values = v.values reshaped_data[item] = values # segregates dtypes and forms blocks matching to columns blocks = form_blocks(reshaped_data, axes) mgr = BlockManager(blocks, axes).consolidate() return mgr
def _init_arrays(self, arrays, arr_names, axes): # segregates dtypes and forms blocks matching to columns blocks = form_blocks(arrays, arr_names, axes) mgr = BlockManager(blocks, axes).consolidate() return mgr