Skip to content

Commit bf84631

Browse files
Chang Shewesm
authored andcommitted
BUG: HDFStore converting all to datetime64 #1520
1 parent d90a829 commit bf84631

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

pandas/io/pytables.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -716,7 +716,7 @@ def _write_array(self, group, key, value):
716716
vlarr.append(value)
717717
elif value.dtype.type == np.datetime64:
718718
self.handle.createArray(group, key, value.view('i8'))
719-
group._v_attrs.value_type = 'datetime64'
719+
getattr(group, key)._v_attrs.value_type = 'datetime64'
720720
else:
721721
self.handle.createArray(group, key, value)
722722

@@ -958,7 +958,7 @@ def _read_array(group, key):
958958
if isinstance(node, tables.VLArray):
959959
return data[0]
960960
else:
961-
dtype = getattr(group._v_attrs, 'value_type', None)
961+
dtype = getattr(node._v_attrs, 'value_type', None)
962962
if dtype == 'datetime64':
963963
return np.array(data, dtype='M8[ns]')
964964
return data

pandas/io/tests/test_pytables.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -660,6 +660,18 @@ def test_unicode_index(self):
660660
s = Series(np.random.randn(len(unicode_values)), unicode_values)
661661
self._check_roundtrip(s, tm.assert_series_equal)
662662

663+
def test_store_datetime_mixed(self):
664+
df = DataFrame({'a': [1,2,3], 'b': [1.,2.,3.], 'c': ['a', 'b', 'c']})
665+
ts = tm.makeTimeSeries()
666+
df['d'] = ts.index[:3]
667+
store = HDFStore('data.h5')
668+
store['df'] = df
669+
store.close()
670+
store = HDFStore('data.h5')
671+
test = store['df']
672+
assert_series_equal(df.dtypes, test.dtypes)
673+
store.close()
674+
os.remove('data.h5')
663675

664676
def curpath():
665677
pth, _ = os.path.split(os.path.abspath(__file__))

0 commit comments

Comments
 (0)