Skip to content

Commit 6ff417f

Browse files
committed
(issue 805): anonymous and/or wildcard axes are handled correctly when using Session.save() and Session.load()
1 parent 20096ec commit 6ff417f

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

larray/inout/pandas.py

Lines changed: 12 additions & 3 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"""
@@ -339,19 +343,24 @@ def df_aslarray(df, sort_rows=False, sort_columns=False, raw=False, parse_header
339343
# #################################### #
340344

341345
def _axis_to_series(key, axis, dtype=None):
342-
name = '{}:{}'.format(key, axis.name)
343-
return pd.Series(data=axis.labels, name=name, dtype=dtype)
346+
name = '{}:{}'.format(key, str(axis))
347+
labels = len(axis) if axis.iswildcard else axis.labels
348+
return pd.Series(data=labels, name=name, dtype=dtype)
344349

345350

346351
def _series_to_axis(series):
347352
name = str(series.name)
348353
series = series.loc[:series.last_valid_index()]
349354
if ':' in name:
350355
key, axis_name = name.split(':')
356+
labels = int(series.values[0]) if axis_name[-1] == '*' else series.values
357+
if _anonymous_axis_pattern.fullmatch(axis_name):
358+
axis_name = None
351359
else:
352360
# for backward compatibility
353361
key = axis_name = name
354-
return key, Axis(labels=series.values, name=axis_name)
362+
labels = series.values
363+
return key, Axis(labels=labels, name=axis_name)
355364

356365

357366
def _group_to_series(key, group, dtype=None):

0 commit comments

Comments
 (0)