From e1ac72a2cae410dcba603602a680a67c285e665e Mon Sep 17 00:00:00 2001 From: kevkle Date: Sat, 7 Dec 2024 17:00:01 +0100 Subject: [PATCH 1/2] #Duplicated names change for columns and 2 dataframes Signed-off-by: kevkle --- pandas/core/reshape/concat.py | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/pandas/core/reshape/concat.py b/pandas/core/reshape/concat.py index e7cb7069bbc26..b27ef97dc3d24 100644 --- a/pandas/core/reshape/concat.py +++ b/pandas/core/reshape/concat.py @@ -710,7 +710,13 @@ def _get_concat_axis_dataframe( if keys is None: if levels is not None: raise ValueError("levels supported only when keys is not None") - concat_axis = _concat_indexes(indexes) + interesected_indexes = indexes[0].intersection(indexes[1]) + if interesected_indexes is None: + concat_axis = _concat_indexes(indexes) + else: + indexes = _rename_duplicated_axis_names(indexes, interesected_indexes) + concat_axis = _concat_indexes(indexes) + else: concat_axis = _make_concat_multiindex(indexes, keys, levels, names) @@ -720,6 +726,27 @@ def _get_concat_axis_dataframe( return concat_axis +def _rename_duplicated_axis_names(indexes: list[Index], interesected_indexes: Index) -> list[Index]: + """ + Rename duplicated axis names if there are duplicated values in the indexes. + + Args: + indexes (Index): Indexes that should be concatenated and have duplicated values. + interesected_indexes (Index): The set of duplicated values in the indexes. + + Returns: + list[Index]: New names for axis without duplicated values. + """ + new_indexes = [] + for number, index in enumerate(indexes): + for i in range(len(index)): + if index[i] in interesected_indexes: + new_index = index.drop(index[i]) + index = new_index.insert(i, f"{index[i]}_{number}") # New values inserted in the new index + new_indexes.append(index) + + return new_indexes + def _clean_keys_and_objs( objs: Iterable[Series | DataFrame] | Mapping[HashableT, Series | DataFrame], From 1f8402474a48121c4667c42f90449006f0bda29f Mon Sep 17 00:00:00 2001 From: kevkle Date: Sat, 7 Dec 2024 17:56:08 +0100 Subject: [PATCH 2/2] # Disabled for axis=0 second Signed-off-by: kevkle --- pandas/core/reshape/concat.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/pandas/core/reshape/concat.py b/pandas/core/reshape/concat.py index b27ef97dc3d24..d273430c4eb0b 100644 --- a/pandas/core/reshape/concat.py +++ b/pandas/core/reshape/concat.py @@ -710,13 +710,15 @@ def _get_concat_axis_dataframe( if keys is None: if levels is not None: raise ValueError("levels supported only when keys is not None") - interesected_indexes = indexes[0].intersection(indexes[1]) - if interesected_indexes is None: + if axis == 0: concat_axis = _concat_indexes(indexes) - else: - indexes = _rename_duplicated_axis_names(indexes, interesected_indexes) - concat_axis = _concat_indexes(indexes) - + elif axis == 1: + interesected_indexes = indexes[0].intersection(indexes[1]) + if interesected_indexes is None: + concat_axis = _concat_indexes(indexes) + else: + indexes = _rename_duplicated_axis_names(indexes, interesected_indexes) + concat_axis = _concat_indexes(indexes) else: concat_axis = _make_concat_multiindex(indexes, keys, levels, names) @@ -726,7 +728,10 @@ def _get_concat_axis_dataframe( return concat_axis -def _rename_duplicated_axis_names(indexes: list[Index], interesected_indexes: Index) -> list[Index]: + +def _rename_duplicated_axis_names( + indexes: list[Index], interesected_indexes: Index +) -> list[Index]: """ Rename duplicated axis names if there are duplicated values in the indexes. @@ -742,7 +747,9 @@ def _rename_duplicated_axis_names(indexes: list[Index], interesected_indexes: In for i in range(len(index)): if index[i] in interesected_indexes: new_index = index.drop(index[i]) - index = new_index.insert(i, f"{index[i]}_{number}") # New values inserted in the new index + index = new_index.insert( + i, f"{index[i]}_{number}" + ) # New values inserted in the new index new_indexes.append(index) return new_indexes