def set_value(self, item, major, minor, value): """ Quickly set single value at (item, major, minor) location Parameters ---------- item : item label (panel item) major : major axis label (panel item row) minor : minor axis label (panel item column) value : scalar Returns ------- panel : Panel If label combo is contained, will be reference to calling Panel, otherwise a new object """ try: frame = self._get_item_cache(item) frame.set_value(major, minor, value) return self except KeyError: ax1, ax2, ax3 = self._expand_axes((item, major, minor)) result = self.reindex(items=ax1, major=ax2, minor=ax3, copy=False) likely_dtype = com._infer_dtype(value) made_bigger = not np.array_equal(ax1, self.items) # how to make this logic simpler? if made_bigger: com._possibly_cast_item(result, item, likely_dtype) return result.set_value(item, major, minor, value)
def set_value(self, item, major, minor, value): """ Quickly set single value at (item, major, minor) location Parameters ---------- item : item label (panel item) major : major axis label (panel item row) minor : minor axis label (panel item column) value : scalar Returns ------- panel : Panel If label combo is contained, will be reference to calling Panel, otherwise a new object """ try: frame = self._get_item_cache(item) frame.set_value(major, minor, value) return self except KeyError: ax1, ax2, ax3 = self._expand_axes((item, major, minor)) result = self.reindex(items=ax1, major=ax2, minor=ax3, copy=False) likely_dtype = com._infer_dtype(value) made_bigger = not np.array_equal(ax1, self.items) # how to make this logic simpler? if made_bigger: com._possibly_cast_item(result, item, likely_dtype) return result.set_value(item, major, minor, value)
def _make_na_block(self, items, ref_items, fill_value=np.nan): # TODO: infer dtypes other than float64 from fill_value block_shape = list(self.shape) block_shape[0] = len(items) dtype = com._infer_dtype(fill_value) block_values = np.empty(block_shape, dtype=dtype) block_values.fill(fill_value) na_block = make_block(block_values, items, ref_items) return na_block
def _make_na_block(self, items, ref_items, fill_value=np.nan): # TODO: infer dtypes other than float64 from fill_value block_shape = list(self.shape) block_shape[0] = len(items) dtype = com._infer_dtype(fill_value) block_values = np.empty(block_shape, dtype=dtype) block_values.fill(fill_value) na_block = make_block(block_values, items, ref_items, do_integrity_check=True) return na_block
def __setitem__(self, key, value): _, N, K = self.shape if isinstance(value, DataFrame): value = value.reindex(index=self.major_axis, columns=self.minor_axis) mat = value.values elif isinstance(value, np.ndarray): assert value.shape == (N, K) mat = np.asarray(value) elif np.isscalar(value): dtype = _infer_dtype(value) mat = np.empty((N, K), dtype=dtype) mat.fill(value) mat = mat.reshape((1, N, K)) NDFrame._set_item(self, key, mat)
def __setitem__(self, key, value): _, N, K = self.shape if isinstance(value, DataFrame): value = value.reindex(index=self.major_axis, columns=self.minor_axis) mat = value.values elif isinstance(value, np.ndarray): assert(value.shape == (N, K)) mat = np.asarray(value) elif np.isscalar(value): dtype = _infer_dtype(value) mat = np.empty((N, K), dtype=dtype) mat.fill(value) mat = mat.reshape((1, N, K)) NDFrame._set_item(self, key, mat)
def __setitem__(self, key, value): _, N, K = self.shape if isinstance(value, DataFrame): value = value.reindex(index=self.major_axis, columns=self.minor_axis) mat = value.values elif isinstance(value, np.ndarray): if value.shape != (N, K): raise AssertionError(("Shape of values must be (%d, %d), " "not (%d, %d)") % ((N, K) + values.shape)) mat = np.asarray(value) elif np.isscalar(value): dtype = _infer_dtype(value) mat = np.empty((N, K), dtype=dtype) mat.fill(value) else: raise TypeError("Cannot set item of type: %s" % str(type(value))) mat = mat.reshape((1, N, K)) NDFrame._set_item(self, key, mat)
def __setitem__(self, key, value): _, N, K = self.shape if isinstance(value, DataFrame): value = value.reindex(index=self.major_axis, columns=self.minor_axis) mat = value.values elif isinstance(value, np.ndarray): if value.shape != (N, K): raise AssertionError( ('Shape of values must be (%d, %d), ' 'not (%d, %d)') % ((N, K) + values.shape)) mat = np.asarray(value) elif np.isscalar(value): dtype = _infer_dtype(value) mat = np.empty((N, K), dtype=dtype) mat.fill(value) else: raise TypeError('Cannot set item of type: %s' % str(type(value))) mat = mat.reshape((1, N, K)) NDFrame._set_item(self, key, mat)
def __setitem__(self, key, value): _, N, K = self.shape # XXX if isinstance(value, LongPanel): if len(value.items) != 1: raise ValueError("Input panel must have only one item!") value = value.to_wide()[value.items[0]] if isinstance(value, DataFrame): value = value.reindex(index=self.major_axis, columns=self.minor_axis) mat = value.values elif np.isscalar(value): dtype = _infer_dtype(value) mat = np.empty((N, K), dtype=dtype) mat.fill(value) mat = mat.reshape((1, N, K)) self._data.set(key, mat)
def __setitem__(self, key, value): _, N, K = self.shape # XXX if isinstance(value, LongPanel): if len(value.items) != 1: raise ValueError('Input panel must have only one item!') value = value.to_wide()[value.items[0]] if isinstance(value, DataFrame): value = value.reindex(index=self.major_axis, columns=self.minor_axis) mat = value.values elif isinstance(value, np.ndarray): assert(value.shape == (N, K)) mat = np.asarray(value) elif np.isscalar(value): dtype = _infer_dtype(value) mat = np.empty((N, K), dtype=dtype) mat.fill(value) mat = mat.reshape((1, N, K)) NDFrame._set_item(self, key, mat)