Skip to content

Commit 2afb05a

Browse files
jbrockmendelproost
authored andcommitted
REF: collect attribute-setting at the end of create_axes (pandas-dev#30029)
1 parent 189a86b commit 2afb05a

File tree

1 file changed

+26
-20
lines changed

1 file changed

+26
-20
lines changed

pandas/io/pytables.py

+26-20
Original file line numberDiff line numberDiff line change
@@ -3734,7 +3734,7 @@ def read_axes(
37343734

37353735
return True
37363736

3737-
def get_object(self, obj):
3737+
def get_object(self, obj, transposed: bool):
37383738
""" return the data for this obj """
37393739
return obj
37403740

@@ -3838,15 +3838,13 @@ def create_axes(
38383838
)
38393839

38403840
# create according to the new data
3841-
self.non_index_axes = []
3842-
self.data_columns = []
3841+
new_non_index_axes: List = []
3842+
new_data_columns: List[Optional[str]] = []
38433843

38443844
# nan_representation
38453845
if nan_rep is None:
38463846
nan_rep = "nan"
38473847

3848-
self.nan_rep = nan_rep
3849-
38503848
# create axes to index and non_index
38513849
index_axes_map = dict()
38523850
for i, a in enumerate(obj.axes):
@@ -3863,7 +3861,7 @@ def create_axes(
38633861
# necessary
38643862
append_axis = list(a)
38653863
if existing_table is not None:
3866-
indexer = len(self.non_index_axes)
3864+
indexer = len(new_non_index_axes)
38673865
exist_axis = existing_table.non_index_axes[indexer][1]
38683866
if not array_equivalent(
38693867
np.array(append_axis), np.array(exist_axis)
@@ -3880,34 +3878,37 @@ def create_axes(
38803878
info["names"] = list(a.names)
38813879
info["type"] = type(a).__name__
38823880

3883-
self.non_index_axes.append((i, append_axis))
3881+
new_non_index_axes.append((i, append_axis))
3882+
3883+
self.non_index_axes = new_non_index_axes
38843884

38853885
# set axis positions (based on the axes)
38863886
new_index_axes = [index_axes_map[a] for a in axes]
38873887
for j, iax in enumerate(new_index_axes):
38883888
iax.set_pos(j)
38893889
iax.update_info(self.info)
3890-
self.index_axes = new_index_axes
38913890

3892-
j = len(self.index_axes)
3891+
j = len(new_index_axes)
38933892

38943893
# check for column conflicts
3895-
for a in self.axes:
3894+
for a in new_index_axes:
38963895
a.maybe_set_size(min_itemsize=min_itemsize)
38973896

38983897
# reindex by our non_index_axes & compute data_columns
3899-
for a in self.non_index_axes:
3898+
for a in new_non_index_axes:
39003899
obj = _reindex_axis(obj, a[0], a[1])
39013900

39023901
def get_blk_items(mgr, blocks):
39033902
return [mgr.items.take(blk.mgr_locs) for blk in blocks]
39043903

3904+
transposed = new_index_axes[0].axis == 1
3905+
39053906
# figure out data_columns and get out blocks
3906-
block_obj = self.get_object(obj)._consolidate()
3907+
block_obj = self.get_object(obj, transposed)._consolidate()
39073908
blocks = block_obj._data.blocks
39083909
blk_items = get_blk_items(block_obj._data, blocks)
3909-
if len(self.non_index_axes):
3910-
axis, axis_labels = self.non_index_axes[0]
3910+
if len(new_non_index_axes):
3911+
axis, axis_labels = new_non_index_axes[0]
39113912
data_columns = self.validate_data_columns(data_columns, min_itemsize)
39123913
if len(data_columns):
39133914
mgr = block_obj.reindex(
@@ -3945,7 +3946,7 @@ def get_blk_items(mgr, blocks):
39453946
blk_items = new_blk_items
39463947

39473948
# add my values
3948-
self.values_axes = []
3949+
vaxes = []
39493950
for i, (b, b_items) in enumerate(zip(blocks, blk_items)):
39503951

39513952
# shape of the data column are the indexable axes
@@ -3959,7 +3960,7 @@ def get_blk_items(mgr, blocks):
39593960
if not (name is None or isinstance(name, str)):
39603961
# TODO: should the message here be more specifically non-str?
39613962
raise ValueError("cannot have non-object label DataIndexableCol")
3962-
self.data_columns.append(name)
3963+
new_data_columns.append(name)
39633964

39643965
# make sure that we match up the existing columns
39653966
# if we have an existing table
@@ -3987,10 +3988,15 @@ def get_blk_items(mgr, blocks):
39873988
)
39883989
col.set_pos(j)
39893990

3990-
self.values_axes.append(col)
3991+
vaxes.append(col)
39913992

39923993
j += 1
39933994

3995+
self.nan_rep = nan_rep
3996+
self.data_columns = new_data_columns
3997+
self.values_axes = vaxes
3998+
self.index_axes = new_index_axes
3999+
39944000
# validate our min_itemsize
39954001
self.validate_min_itemsize(min_itemsize)
39964002

@@ -4428,9 +4434,9 @@ class AppendableFrameTable(AppendableTable):
44284434
def is_transposed(self) -> bool:
44294435
return self.index_axes[0].axis == 1
44304436

4431-
def get_object(self, obj):
4437+
def get_object(self, obj, transposed: bool):
44324438
""" these are written transposed """
4433-
if self.is_transposed:
4439+
if transposed:
44344440
obj = obj.T
44354441
return obj
44364442

@@ -4512,7 +4518,7 @@ class AppendableSeriesTable(AppendableFrameTable):
45124518
def is_transposed(self) -> bool:
45134519
return False
45144520

4515-
def get_object(self, obj):
4521+
def get_object(self, obj, transposed: bool):
45164522
return obj
45174523

45184524
def write(self, obj, data_columns=None, **kwargs):

0 commit comments

Comments
 (0)