Skip to content

Commit e1ac72a

Browse files
committed
#Duplicated names change for columns and 2 dataframes
Signed-off-by: kevkle <[email protected]>
1 parent 8a286fa commit e1ac72a

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

pandas/core/reshape/concat.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -710,7 +710,13 @@ def _get_concat_axis_dataframe(
710710
if keys is None:
711711
if levels is not None:
712712
raise ValueError("levels supported only when keys is not None")
713-
concat_axis = _concat_indexes(indexes)
713+
interesected_indexes = indexes[0].intersection(indexes[1])
714+
if interesected_indexes is None:
715+
concat_axis = _concat_indexes(indexes)
716+
else:
717+
indexes = _rename_duplicated_axis_names(indexes, interesected_indexes)
718+
concat_axis = _concat_indexes(indexes)
719+
714720
else:
715721
concat_axis = _make_concat_multiindex(indexes, keys, levels, names)
716722

@@ -720,6 +726,27 @@ def _get_concat_axis_dataframe(
720726

721727
return concat_axis
722728

729+
def _rename_duplicated_axis_names(indexes: list[Index], interesected_indexes: Index) -> list[Index]:
730+
"""
731+
Rename duplicated axis names if there are duplicated values in the indexes.
732+
733+
Args:
734+
indexes (Index): Indexes that should be concatenated and have duplicated values.
735+
interesected_indexes (Index): The set of duplicated values in the indexes.
736+
737+
Returns:
738+
list[Index]: New names for axis without duplicated values.
739+
"""
740+
new_indexes = []
741+
for number, index in enumerate(indexes):
742+
for i in range(len(index)):
743+
if index[i] in interesected_indexes:
744+
new_index = index.drop(index[i])
745+
index = new_index.insert(i, f"{index[i]}_{number}") # New values inserted in the new index
746+
new_indexes.append(index)
747+
748+
return new_indexes
749+
723750

724751
def _clean_keys_and_objs(
725752
objs: Iterable[Series | DataFrame] | Mapping[HashableT, Series | DataFrame],

0 commit comments

Comments
 (0)