@@ -710,7 +710,13 @@ def _get_concat_axis_dataframe(
710
710
if keys is None :
711
711
if levels is not None :
712
712
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
+
714
720
else :
715
721
concat_axis = _make_concat_multiindex (indexes , keys , levels , names )
716
722
@@ -720,6 +726,27 @@ def _get_concat_axis_dataframe(
720
726
721
727
return concat_axis
722
728
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
+
723
750
724
751
def _clean_keys_and_objs (
725
752
objs : Iterable [Series | DataFrame ] | Mapping [HashableT , Series | DataFrame ],
0 commit comments