Skip to content

Commit 8cf1fc9

Browse files
committed
(issue 805): anonymous and/or wildcard axes are handled correctly when using Session.save() and Session.load()
1 parent f9ce292 commit 8cf1fc9

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

larray/inout/pandas.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import absolute_import, print_function
22

3+
import re
34
from itertools import product
45
from collections import OrderedDict
56

@@ -140,6 +141,9 @@ def from_series(s, sort_rows=False, fill_value=nan, meta=None, **kwargs):
140141
return LArray(s.values, Axis(s.index.values, name), meta=meta)
141142

142143

144+
_anonymous_axis_pattern = re.compile(r'\{(\d+|\??)\}\*?')
145+
146+
143147
def from_frame(df, sort_rows=False, sort_columns=False, parse_header=False, unfold_last_axis_name=False,
144148
fill_value=nan, meta=None, cartesian_prod=True, **kwargs):
145149
r"""
@@ -357,15 +361,20 @@ def _extract_labels_from_series(series):
357361

358362

359363
def _axis_to_series(key, axis, dtype=None):
360-
name = '{}:{}'.format(key, axis.name)
361-
return pd.Series(data=axis.labels, name=name, dtype=dtype)
364+
name = '{}:{}'.format(key, str(axis))
365+
labels = len(axis) if axis.iswildcard else axis.labels
366+
return pd.Series(data=labels, name=name, dtype=dtype)
362367

363368

364369
def _series_to_axis(series):
365370
name = str(series.name)
366371
labels = _extract_labels_from_series(series)
367372
if ':' in name:
368373
key, axis_name = name.split(':')
374+
if axis_name[-1] == '*':
375+
labels = labels[0]
376+
if _anonymous_axis_pattern.match(axis_name):
377+
axis_name = None
369378
else:
370379
# for backward compatibility
371380
key = axis_name = name

0 commit comments

Comments
 (0)