Skip to content

Commit 9f8ec02

Browse files
committed
REF: _get_objs_combined_axis
1 parent 06850a1 commit 9f8ec02

File tree

3 files changed

+15
-11
lines changed

3 files changed

+15
-11
lines changed

pandas/core/frame.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6126,12 +6126,10 @@ def _list_to_arrays(data, columns, coerce_float=False, dtype=None):
61266126

61276127

61286128
def _list_of_series_to_arrays(data, columns, coerce_float=False, dtype=None):
6129-
from pandas.core.index import _get_combined_index
6129+
from pandas.core.index import _get_objs_combined_axis
61306130

61316131
if columns is None:
6132-
columns = _get_combined_index([
6133-
s.index for s in data if getattr(s, 'index', None) is not None
6134-
])
6132+
columns = _get_objs_combined_axis(data)
61356133

61366134
indexer_cache = {}
61376135

pandas/core/indexes/api.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,22 @@
2323
'PeriodIndex', 'DatetimeIndex',
2424
'_new_Index', 'NaT',
2525
'_ensure_index', '_get_na_value', '_get_combined_index',
26+
'_get_objs_combined_axis',
2627
'_get_distinct_indexes', '_union_indexes',
2728
'_get_consensus_names',
2829
'_all_indexes_same']
2930

3031

32+
def _get_objs_combined_axis(objs, intersect=False, axis=0):
33+
# Extract combined index: return intersection or union (depending on the
34+
# value of "intersect") of indexes on given axis, or None if all objects
35+
# lack indexes (e.g. they are numpy arrays)
36+
obs_idxes = [obj._get_axis(axis) for obj in objs
37+
if hasattr(obj, '_get_axis')]
38+
if obs_idxes:
39+
return _get_combined_index(obs_idxes, intersect=intersect)
40+
41+
3142
def _get_combined_index(indexes, intersect=False):
3243
# TODO: handle index names!
3344
indexes = _get_distinct_indexes(indexes)

pandas/core/reshape/pivot.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from pandas.core.series import Series
99
from pandas.core.groupby import Grouper
1010
from pandas.core.reshape.util import cartesian_product
11-
from pandas.core.index import Index, _get_combined_index
11+
from pandas.core.index import Index, _get_objs_combined_axis
1212
from pandas.compat import range, lrange, zip
1313
from pandas import compat
1414
import pandas.core.common as com
@@ -440,12 +440,7 @@ def crosstab(index, columns, values=None, rownames=None, colnames=None,
440440
rownames = _get_names(index, rownames, prefix='row')
441441
colnames = _get_names(columns, colnames, prefix='col')
442442

443-
obs_idxes = [obj.index for objs in (index, columns) for obj in objs
444-
if hasattr(obj, 'index')]
445-
if obs_idxes:
446-
common_idx = _get_combined_index(obs_idxes, intersect=True)
447-
else:
448-
common_idx = None
443+
common_idx = _get_objs_combined_axis(index + columns, intersect=True)
449444

450445
data = {}
451446
data.update(zip(rownames, index))

0 commit comments

Comments
 (0)