Closed
Description
The HDFStore seemed to not accepting timedelta's objects. The code
import datetime as dt
import pandas as pd
s = pd.Series(pd.date_range('2012-1-1', periods=3, freq='D'))
td = pd.Series([ dt.timedelta(days=i) for i in range(3) ])
df = pd.DataFrame(dict(A = s, B = td))
print df
print df.dtypes
store = pd.HDFStore('store.h5')
store['df'] = df
store.close()
results in the ValueError: unknown type: 'timedelta64[ns]'
.
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-27-b5619cf79ed9> in <module>()
9
10 store = pd.HDFStore('store.h5')
---> 11 store['df'] = df
12 store.close()
/Users/user/.virtual_envs/system/lib/python2.7/site-packages/pandas/io/pytables.pyc in __setitem__(self, key, value)
239
240 def __setitem__(self, key, value):
--> 241 self.put(key, value)
242
243 def __delitem__(self, key):
/Users/user/.virtual_envs/system/lib/python2.7/site-packages/pandas/io/pytables.pyc in put(self, key, value, table, append, **kwargs)
534 table
535 """
--> 536 self._write_to_group(key, value, table=table, append=append, **kwargs)
537
538 def remove(self, key, where=None, start=None, stop=None):
/Users/user/.virtual_envs/system/lib/python2.7/site-packages/pandas/io/pytables.pyc in _write_to_group(self, key, value, index, table, append, complib, **kwargs)
869 raise ValueError('Compression not supported on non-table')
870
--> 871 s.write(obj = value, append=append, complib=complib, **kwargs)
872 if s.is_table and index:
873 s.create_index(columns = index)
/Users/user/.virtual_envs/system/lib/python2.7/site-packages/pandas/io/pytables.pyc in write(self, obj, **kwargs)
2003 blk = data.blocks[i]
2004 # I have no idea why, but writing values before items fixed #2299
-> 2005 self.write_array('block%d_values' % i, blk.values)
2006 self.write_index('block%d_items' % i, blk.items)
2007
/Users/user/.virtual_envs/system/lib/python2.7/site-packages/pandas/io/pytables.pyc in write_array(self, key, value)
1805 self.write_array_empty(key, value)
1806 else:
-> 1807 self._handle.createArray(self.group, key, value)
1808
1809 getattr(self.group, key)._v_attrs.transposed = transposed
/Users/user/.virtual_envs/system/lib/python2.7/site-packages/tables/file.pyc in createArray(self, where, name, object, title, byteorder, createparents)
778 parentNode = self._getOrCreatePath(where, createparents)
779 return Array(parentNode, name,
--> 780 object=object, title=title, byteorder=byteorder)
781
782
/Users/user/.virtual_envs/system/lib/python2.7/site-packages/tables/array.pyc in __init__(self, parentNode, name, object, title, byteorder, _log, _atom)
165 # Ordinary arrays have no filters: leaf is created with default ones.
166 super(Array, self).__init__(parentNode, name, new, Filters(),
--> 167 byteorder, _log)
168
169
/Users/user/.virtual_envs/system/lib/python2.7/site-packages/tables/leaf.pyc in __init__(self, parentNode, name, new, filters, byteorder, _log)
261 # is a lazy property that automatically handles their loading.
262
--> 263 super(Leaf, self).__init__(parentNode, name, _log)
264
265
/Users/user/.virtual_envs/system/lib/python2.7/site-packages/tables/node.pyc in __init__(self, parentNode, name, _log)
248 # Create or open the node and get its object ID.
249 if new:
--> 250 self._v_objectID = self._g_create()
251 else:
252 self._v_objectID = self._g_open()
/Users/user/.virtual_envs/system/lib/python2.7/site-packages/tables/array.pyc in _g_create(self)
198 # on
199 (self._v_objectID, self.shape, self.atom) = self._createArray(
--> 200 nparr, self._v_new_title, self.atom)
201 except: #XXX
202 # Problems creating the Array on disk. Close node and re-raise.
/Users/user/.virtual_envs/system/lib/python2.7/site-packages/tables/hdf5Extension.so in tables.hdf5Extension.Array._createArray (tables/hdf5Extension.c:8214)()
/Users/user/.virtual_envs/system/lib/python2.7/site-packages/tables/atom.pyc in from_dtype(class_, dtype, dflt)
368 return class_.from_kind('string', itemsize, dtype.shape, dflt)
369 # Most NumPy types have direct correspondence with PyTables types.
--> 370 return class_.from_type(basedtype.name, dtype.shape, dflt)
371
372 @classmethod
/Users/user/.virtual_envs/system/lib/python2.7/site-packages/tables/atom.pyc in from_type(class_, type, shape, dflt)
392
393 if type not in all_types:
--> 394 raise ValueError("unknown type: %r" % (type,))
395 kind, itemsize = split_type(type)
396 return class_.from_kind(kind, itemsize, shape, dflt)
ValueError: unknown type: 'timedelta64[ns]'
OS: OSX 10.8.3
python: 2.7.4
pandas: 0.11.0
numpy: 1.7.1
tables: 2.4.0
UPDATE:
It seemed to be a pytables issue.