From 479ab346259495a6a9ee3c7eed09d45aa146dc10 Mon Sep 17 00:00:00 2001 From: Ankur Dedania Date: Tue, 22 Mar 2016 15:21:45 -0500 Subject: [PATCH 1/3] Create RangeIndex when ignore_index is False --- pandas/tools/merge.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/pandas/tools/merge.py b/pandas/tools/merge.py index 82fdf0a3d3b46..2f5b53d87ea73 100644 --- a/pandas/tools/merge.py +++ b/pandas/tools/merge.py @@ -9,9 +9,9 @@ from pandas.core.frame import DataFrame, _merge_doc from pandas.core.generic import NDFrame from pandas.core.series import Series -from pandas.core.index import (Index, MultiIndex, _get_combined_index, - _ensure_index, _get_consensus_names, - _all_indexes_same) +from pandas.core.index import (Index, MultiIndex, RangeIndex, + _get_combined_index, _ensure_index, + _get_consensus_names, _all_indexes_same) from pandas.core.internals import (items_overlap_with_suffix, concatenate_block_managers) from pandas.util.decorators import Appender, Substitution @@ -1079,8 +1079,7 @@ def _get_concat_axis(self): if self.axis == 0: indexes = [x.index for x in self.objs] elif self.ignore_index: - idx = Index(np.arange(len(self.objs))) - idx.is_unique = True # arange is always unique + idx = RangeIndex(len(self.objs)) return idx elif self.keys is None: names = [] @@ -1092,7 +1091,7 @@ def _get_concat_axis(self): if x.name is not None: names.append(x.name) else: - idx = Index(np.arange(len(self.objs))) + idx = RangeIndex(len(self.objs)) idx.is_unique = True return idx @@ -1103,8 +1102,7 @@ def _get_concat_axis(self): indexes = [x._data.axes[self.axis] for x in self.objs] if self.ignore_index: - idx = Index(np.arange(sum(len(i) for i in indexes))) - idx.is_unique = True + idx = RangeIndex(sum(len(i) for i in indexes)) return idx if self.keys is None: From 023f5dd15ed96cef8e894d8cb662c99780895939 Mon Sep 17 00:00:00 2001 From: Ankur Dedania Date: Tue, 22 Mar 2016 15:38:46 -0500 Subject: [PATCH 2/3] removed setting is_unique and use RangeIndex for comparision --- pandas/tools/merge.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pandas/tools/merge.py b/pandas/tools/merge.py index 2f5b53d87ea73..25512686f69a1 100644 --- a/pandas/tools/merge.py +++ b/pandas/tools/merge.py @@ -992,7 +992,7 @@ def get_result(self): # names (because set via the 'key' argument in the 'concat' # function call. If that's not the case, use the series names # as column names - if (columns.equals(Index(np.arange(len(self.objs)))) and + if (columns.equals(RangeIndex(len(self.objs))) and not self.ignore_index): columns = np.array([data[i].name for i in range(len(data))], @@ -1092,7 +1092,6 @@ def _get_concat_axis(self): names.append(x.name) else: idx = RangeIndex(len(self.objs)) - idx.is_unique = True return idx return Index(names) From 850dac4c8364d490394fe61a965440698d138f2e Mon Sep 17 00:00:00 2001 From: Ankur Dedania Date: Tue, 22 Mar 2016 17:38:03 -0500 Subject: [PATCH 3/3] switched RangeIndex to com._default_index --- pandas/tools/merge.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pandas/tools/merge.py b/pandas/tools/merge.py index 25512686f69a1..dd5398af7eb7f 100644 --- a/pandas/tools/merge.py +++ b/pandas/tools/merge.py @@ -9,9 +9,9 @@ from pandas.core.frame import DataFrame, _merge_doc from pandas.core.generic import NDFrame from pandas.core.series import Series -from pandas.core.index import (Index, MultiIndex, RangeIndex, - _get_combined_index, _ensure_index, - _get_consensus_names, _all_indexes_same) +from pandas.core.index import (Index, MultiIndex, _get_combined_index, + _ensure_index, _get_consensus_names, + _all_indexes_same) from pandas.core.internals import (items_overlap_with_suffix, concatenate_block_managers) from pandas.util.decorators import Appender, Substitution @@ -992,7 +992,7 @@ def get_result(self): # names (because set via the 'key' argument in the 'concat' # function call. If that's not the case, use the series names # as column names - if (columns.equals(RangeIndex(len(self.objs))) and + if (columns.equals(com._default_index(len(self.objs))) and not self.ignore_index): columns = np.array([data[i].name for i in range(len(data))], @@ -1079,7 +1079,7 @@ def _get_concat_axis(self): if self.axis == 0: indexes = [x.index for x in self.objs] elif self.ignore_index: - idx = RangeIndex(len(self.objs)) + idx = com._default_index(len(self.objs)) return idx elif self.keys is None: names = [] @@ -1091,7 +1091,7 @@ def _get_concat_axis(self): if x.name is not None: names.append(x.name) else: - idx = RangeIndex(len(self.objs)) + idx = com._default_index(len(self.objs)) return idx return Index(names) @@ -1101,7 +1101,7 @@ def _get_concat_axis(self): indexes = [x._data.axes[self.axis] for x in self.objs] if self.ignore_index: - idx = RangeIndex(sum(len(i) for i in indexes)) + idx = com._default_index(sum(len(i) for i in indexes)) return idx if self.keys is None: