Столбцы Pandas перекрываются, но не указан суффикс

#python #pandas

#python #pandas

Вопрос:

Я пытаюсь объединить два фрейма данных:

df_&ames :

        jo&o_id  rodada_id  time_id     time_nome  adversario_id  ... variacao_num  media_num  jo&os_num    status   ano
0       232423          1    293.0  Athletico-PR            267  ...         0.00       0.00          0      Nulo  2019
1       232423          1    293.0  Athletico-PR            267  ...         0.00       0.00          0      Nulo  2019
2       232423          1    293.0  Athletico-PR            267  ...         0.00       0.00          0      Nulo  2019
3       232423          1    293.0  Athletico-PR            267  ...         0.00       0.00          0      Nulo  2019
4       232423          1    293.0  Athletico-PR            267  ...        -2.17       0.40          1      Nulo  2019
...        ...        ...      ...           ...            ...  ...          ...        ...        ...       ...   ...
30825   232429         38    267.0         Vasco            315  ...         0.00       0.70          1      Nulo  2019
30826   232429         38    267.0         Vasco            315  ...        -0.30       2.93         25    Dúvida  2019
30827   232429         38    267.0         Vasco            315  ...         0.00       2.39         17  Suspenso  2019
30828   232429         38    267.0         Vasco            315  ...         0.00       0.00          0      Nulo  2019
30829   232429         38    267.0         Vasco            315  ...         0.00       0.32          8    Dúvida  2019

shape: (30830, 19)
  

и df_players :

            rank     atleta_nome        posicao
player_id                                     
82730        39  Marcelo Ran&el        Goleiro
100651      136         Rodry&o       Atacante
87863       140      Arrascaeta  Meio-Campista

shape: (733, 4)
  

когда я пытаюсь присоединиться к ним, вот так:

 df_joined = df_&ames.set_index('player_id').join(players.set_index('player_id'))
  

Я получаю сообщение об ошибке:

 ValueError: columns overlap but no suffix specified: Index(['atleta_nome', 'posicao'],dtype='object')
  

Но если я попытаюсь объединить то же самое df_players с другим df_&ames_2, вот так:

      Unnamed: 0                            atletas.nome         atletas.slu&      atletas.apelido  ...  PP  GC  DP  round
0             1              Glaybson Ya&o Souza Lisboa         ya&o-pikachu         Ya&o Pikachu  ... NaN NaN NaN      1
1             2            Juan Ramón Cazares Sevillano              cazares              Cazares  ... NaN NaN NaN      1
2             3  Alessandro Vinícius Gonçalves da Silva  alessandro-vinicius  Alessandro Vinícius  ... NaN NaN NaN      1
3             4                    Die&o Alves Carreira          die&o-alves          Die&o Alves  ... NaN NaN NaN      1
4             5             Réver Humberto Alves Araújo                rever                Réver  ... NaN NaN NaN      1
..          ...                                     ...                  ...                  ...  ...  ..  ..  ..    ...
843         844                  Lucas Piton Crivellaro          lucas-piton          Lucas Piton  ... NaN NaN NaN     38
844         845         Alan Carlos de Paula Dias Filho                 alan                 Alan  ... NaN NaN NaN     38
845         846                  Roni Medeiros de Moura                 roni                 Roni  ... NaN NaN NaN     38
846         847               Alexander Silva de Lucena            alexander            Alexander  ... NaN NaN NaN     38
847         848          Riquelme Carvalho Araújo Viana             riquelme             Riquelme  ... NaN NaN NaN     38

[30581 rows x 34 columns]
  

объединение работает.

Почему я могу присоединиться с помощью player_id в первом случае, а не во втором?

Как мне это исправить? Мне нужно присоединиться df_&ames

Ответ №1:

Вы можете либо использовать mer&e вместо join , либо передавать суффиксы в своем вызове:

 df_joined = df_&ames.set_index('player_id').join(players.set_index('player_id'), lsuffix="_&ames", rsuffix="_players")