Skip to content

Commit 14dc6fb

Browse files
committed
Merge remote-tracking branch 'JohnColvin/patch-1'
* JohnColvin/patch-1: added tranposed attribute, used in _read_array fixed row/col orientation for 2D arrays
2 parents 14b77c8 + 4ff42db commit 14dc6fb

File tree

1 file changed

+20
-8
lines changed

1 file changed

+20
-8
lines changed

pandas/io/pytables.py

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -686,7 +686,10 @@ def _read_index_node(self, node):
686686
def _write_array(self, group, key, value):
687687
if key in group:
688688
self.handle.removeNode(group, key)
689-
689+
690+
#Transform needed to interface with pytables row/col notation
691+
value = value.T
692+
690693
if self.filters is not None:
691694
atom = None
692695
try:
@@ -701,6 +704,7 @@ def _write_array(self, group, key, value):
701704
value.shape,
702705
filters=self.filters)
703706
ca[:] = value
707+
getattr(group, key)._v_attrs.transposed = True
704708
return
705709

706710
if value.dtype.type == np.object_:
@@ -719,6 +723,8 @@ def _write_array(self, group, key, value):
719723
getattr(group, key)._v_attrs.shape = value.shape
720724
else:
721725
self.handle.createArray(group, key, value)
726+
727+
getattr(group, key)._v_attrs.transposed = True
722728

723729
def _write_table(self, group, items=None, index=None, columns=None,
724730
values=None, append=False, compression=None):
@@ -958,23 +964,29 @@ def _read_array(group, key):
958964
import tables
959965
node = getattr(group, key)
960966
data = node[:]
967+
attrs = node._v_attrs
968+
969+
transposed = getattr(attrs, 'transposed', False)
961970

962971
if isinstance(node, tables.VLArray):
963-
return data[0]
972+
ret = data[0]
964973
else:
965-
attrs = node._v_attrs
966-
967974
dtype = getattr(attrs, 'value_type', None)
968975
shape = getattr(attrs, 'shape', None)
969976

970977
if shape is not None:
971978
# length 0 axis
972-
return np.empty(shape, dtype=dtype)
979+
ret = np.empty(shape, dtype=dtype)
973980

974981
if dtype == 'datetime64':
975-
return np.array(data, dtype='M8[ns]')
976-
return data
977-
982+
ret = np.array(data, dtype='M8[ns]')
983+
ret = data
984+
985+
if transposed == True:
986+
return ret.T
987+
else:
988+
return ret
989+
978990
def _unconvert_index(data, kind):
979991
if kind == 'datetime64':
980992
index = DatetimeIndex(data)

0 commit comments

Comments
 (0)