diff --git a/pandas/io/pytables.py b/pandas/io/pytables.py index d116337c80e4d..5820e447e5df5 100644 --- a/pandas/io/pytables.py +++ b/pandas/io/pytables.py @@ -686,7 +686,10 @@ def _read_index_node(self, node): def _write_array(self, group, key, value): if key in group: self.handle.removeNode(group, key) - + + #Transform needed to interface with pytables row/col notation + value = value.T + if self.filters is not None: atom = None try: @@ -701,6 +704,7 @@ def _write_array(self, group, key, value): value.shape, filters=self.filters) ca[:] = value + getattr(group, key)._v_attrs.transposed = True return if value.dtype.type == np.object_: @@ -719,6 +723,8 @@ def _write_array(self, group, key, value): getattr(group, key)._v_attrs.shape = value.shape else: self.handle.createArray(group, key, value) + + getattr(group, key)._v_attrs.transposed = True def _write_table(self, group, items=None, index=None, columns=None, values=None, append=False, compression=None): @@ -958,23 +964,29 @@ def _read_array(group, key): import tables node = getattr(group, key) data = node[:] + attrs = node._v_attrs + + transposed = getattr(attrs, 'transposed', False) if isinstance(node, tables.VLArray): - return data[0] + ret = data[0] else: - attrs = node._v_attrs - dtype = getattr(attrs, 'value_type', None) shape = getattr(attrs, 'shape', None) if shape is not None: # length 0 axis - return np.empty(shape, dtype=dtype) + ret = np.empty(shape, dtype=dtype) if dtype == 'datetime64': - return np.array(data, dtype='M8[ns]') - return data - + ret = np.array(data, dtype='M8[ns]') + ret = data + + if transposed == True: + return ret.T + else: + return ret + def _unconvert_index(data, kind): if kind == 'datetime64': index = DatetimeIndex(data)