Skip to content

Commit a026561

Browse files
committed
Merge pull request #3623 from jreback/hdf_perf_warn
DOC: more informative PerformanceWarning in HDFStore
2 parents 90b252a + 7177edd commit a026561

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

pandas/io/pytables.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class AttributeConflictWarning(Warning): pass
5050
class PerformanceWarning(Warning): pass
5151
performance_doc = """
5252
your performance may suffer as PyTables will pickle object types that it cannot map
53-
directly to c-types [inferred_type->%s,key->%s]
53+
directly to c-types [inferred_type->%s,key->%s] [items->%s]
5454
"""
5555

5656
# map object types
@@ -1861,7 +1861,7 @@ def write_array_empty(self, key, value):
18611861
getattr(self.group, key)._v_attrs.value_type = str(value.dtype)
18621862
getattr(self.group, key)._v_attrs.shape = value.shape
18631863

1864-
def write_array(self, key, value):
1864+
def write_array(self, key, value, items=None):
18651865
if key in self.group:
18661866
self._handle.removeNode(self.group, key)
18671867

@@ -1904,7 +1904,11 @@ def write_array(self, key, value):
19041904
elif inferred_type == 'string':
19051905
pass
19061906
else:
1907-
ws = performance_doc % (inferred_type,key)
1907+
try:
1908+
items = list(items)
1909+
except:
1910+
pass
1911+
ws = performance_doc % (inferred_type,key,items)
19081912
warnings.warn(ws, PerformanceWarning)
19091913

19101914
vlarr = self._handle.createVLArray(self.group, key,
@@ -2115,7 +2119,7 @@ def write(self, obj, **kwargs):
21152119
for i in range(nblocks):
21162120
blk = data.blocks[i]
21172121
# I have no idea why, but writing values before items fixed #2299
2118-
self.write_array('block%d_values' % i, blk.values)
2122+
self.write_array('block%d_values' % i, blk.values, items=blk.items)
21192123
self.write_index('block%d_items' % i, blk.items)
21202124

21212125
class FrameStorer(BlockManagerStorer):

0 commit comments

Comments
 (0)