Skip to content

Commit 4ff42db

Browse files
committed
added tranposed attribute, used in _read_array
the transposed attribute keeps track of whether the data has been  transposed, allowing it to be correctly read by _read_array. Some minor rearrangement of _read_array was necessary to reduce duplicate code.
1 parent 80b5082 commit 4ff42db

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

pandas/io/pytables.py

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -704,6 +704,7 @@ def _write_array(self, group, key, value):
704704
value.shape,
705705
filters=self.filters)
706706
ca[:] = value
707+
getattr(group, key)._v_attrs.transposed = True
707708
return
708709

709710
if value.dtype.type == np.object_:
@@ -722,6 +723,8 @@ def _write_array(self, group, key, value):
722723
getattr(group, key)._v_attrs.shape = value.shape
723724
else:
724725
self.handle.createArray(group, key, value)
726+
727+
getattr(group, key)._v_attrs.transposed = True
725728

726729
def _write_table(self, group, items=None, index=None, columns=None,
727730
values=None, append=False, compression=None):
@@ -961,23 +964,29 @@ def _read_array(group, key):
961964
import tables
962965
node = getattr(group, key)
963966
data = node[:]
967+
attrs = node._v_attrs
968+
969+
transposed = getattr(attrs, 'transposed', False)
964970

965971
if isinstance(node, tables.VLArray):
966-
return data[0]
972+
ret = data[0]
967973
else:
968-
attrs = node._v_attrs
969-
970974
dtype = getattr(attrs, 'value_type', None)
971975
shape = getattr(attrs, 'shape', None)
972976

973977
if shape is not None:
974978
# length 0 axis
975-
return np.empty(shape, dtype=dtype)
979+
ret = np.empty(shape, dtype=dtype)
976980

977981
if dtype == 'datetime64':
978-
return np.array(data, dtype='M8[ns]')
979-
return data
980-
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+
981990
def _unconvert_index(data, kind):
982991
if kind == 'datetime64':
983992
index = DatetimeIndex(data)

0 commit comments

Comments
 (0)