Uma explicação detalhada dos parâmetros de concat e merge da função de emenda do Python (com exibição de operação de código)

Função de mesclagem e emenda de várias tabelas do DataFrame, explicação detalhada do parâmetro de mesclagem + exibição de operação de código

Criar um DataFrame de demonstração

data = {
    
    'name': ['user1', 'user2', 'user3', 'user4', 'user5'],
        'old': [21, 18, 22, 28, 26],
        'weight': [124, 124, 102,107,121]
        }
test_DataFrame1= pd.DataFrame(data)
test_DataFrame1

data = {
    
    'name': ['user1', 'user3', 'user5', 'user6', 'user7'],
        'old': [21, 22, 26, 30, 31],
        'high': [171, 165, 180,175,159]
        }
test_DataFrame2= pd.DataFrame(data)
test_DataFrame2

Função de mesclagem

1.concatenar

Existem funções concat em outras linguagens, que são concatenação de strings em linguagem C e concatenação de strings em SQL. Em Pandas, é equivalente a uma conexão completa (Union all) no banco de dados: ao longo de um eixo, vários objetos são empilhados, então não os confunda. Ao contrário do banco de dados, ele não desduplica, mas o método drop_duplicates pode ser usado para obter o efeito de desduplicação.

A sintaxe é a seguinte:

concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, 
       keys=None, levels=None, names=None, verify_integrity=False, copy=True): 

Site oficial: pandas.concat

Explicação do parâmetro:

  • objs: Uma sequência ou mapa de objetos Series, DataFrame ou Panel, ou seja, os dois objetos que estão concatenados.
  • axis: O padrão é 0, 0 é emenda de linha, 1 é emenda de coluna, ou seja, ao longo do eixo da conexão.
  • join: {'inner', 'outer'}, o padrão é 'outer'. Como lidar com índices em outros eixos. exterior é a união e interior é a interseção.
  • ignore_index: boolean, padrão False. Se True, o valor do índice mesclado não é usado. Os eixos resultantes serão rotulados 0,...,n-1. Os valores de índice em outros eixos persistem na junção.
  • join_axes: Lista de objetos Index. Use índices específicos para outros eixos n-1 em vez de executar a lógica de configuração interna/externa.
  • chaves: sequência, padrão Nenhum. Crie um índice hierárquico usando a chave passada como a camada mais externa. Se multi-índice deve ser uma tupla.
  • níveis: lista de sequências, padrão Nenhum. O nível específico (valor exclusivo) usado para construir o MultiIndex. Caso contrário, eles serão inferidos da chave.
  • nomes: lista, padrão Nenhum. O nome do nível no índice hierárquico resultante.
  • verifique_integridade: booleano, padrão Falso. Verifique se o eixo recém-conectado contém duplicatas.
  • copy: boolean, o valor padrão é True. Se False, não copie dados desnecessariamente.

Ao usar concat diretamente sem parâmetros, é:

pd.concat([test_DataFrame1,test_DataFrame2])

Neste momento, o padrão do eixo é 0, o que significa conexão de linha, que é quando o eixo é 1:

pd.concat([test_DataFrame1,test_DataFrame2],axis=1)

O número de linhas não muda e as colunas aumentam. Alterar junção para interseção apenas mescla outras exclusões com a mesma coluna:

pd.concat([test_DataFrame1,test_DataFrame2],axis=0,join='inner')

Da mesma forma, quando o eixo é 1, é o mesmo, apenas para ver se o índice da linha é o mesmo

pd.concat([test_DataFrame1,test_DataFrame2],axis=1,join='inner')

A nova versão do pandas removeu join_axes, que pode ser substituído por merge.

E ignore_index é substituir o índice do índice correspondentemente:

pd.concat([test_DataFrame1,test_DataFrame2],axis=0,join='outer',ignore_index=True)

2. mesclar

Merge é mais como um banco de dados relacional SQL para conectar bancos de dados de acordo com as chaves correspondentes na tabela, semelhante ao join.

A sintaxe é a seguinte:

merge(left, right, how='inner', on=None, left_on=None, right_on=None,  
      left_index=False, right_index=False, sort=True,  
      suffixes=('_x', '_y'), copy=True, indicator=False)

Site oficial: pandas.merge

Descrição do parâmetro:

  • left: O DataFrame esquerdo participando da mesclagem
  • right: o DataFrame certo participando da mesclagem
  • como: {inner, outer, left, right} o padrão é interno como interseção.
  • on: nomes de coluna a serem usados ​​para junções. O nome da coluna é como um recurso comum às duas tabelas que estão sendo unidas. Semelhante a mesclar várias tabelas por chave. Se não for especificado e outras chaves de conexão não precisarem ser especificadas, a interseção dos nomes das colunas esquerda e direita será usada como chave de conexão, ou seja, a conexão interna.
  • left_on: a coluna no DataFrame esquerdo para usar como chave de junção
  • right_on: a coluna direita no DataFrame usada como chave de junção
  • left_index: Use o índice de linha no DataFrame esquerdo como a chave de junção
  • right_index: use o índice de linha no DataFrame certo como a chave de junção
  • sort: O padrão é True, que classifica os dados mesclados. Definir como False pode melhorar o desempenho na maioria dos casos
  • suffixes: Uma tupla de valores de string, usada para especificar o nome do sufixo anexado ao nome da coluna quando os DataFrames esquerdo e direito têm o mesmo nome de coluna, o padrão é ('_x','_y'). Se ambos os objetos DataFrame tiverem "Data", então "Data_x" e "Data_y" aparecerão no resultado
  • copy: O padrão é True, sempre copia os dados na estrutura de dados; configurar como False na maioria dos casos pode melhorar o desempenho
  • indicador: mostra a fonte dos dados nos dados combinados

Ainda nos dois DataFrames anteriores, o efeito padrão é:

pd.merge(test_DataFrame1,test_DataFrame2)

Se a interseção for mesclada de acordo com o índice, se não houver valor de índice, ela será preenchida automaticamente com NaN:

pd.merge(test_DataFrame1,test_DataFrame2,how='outer')

Se você deseja especificar um nome de coluna específico para indexação, você precisa da função on:

pd.merge(test_DataFrame1,test_DataFrame2,how='outer',on='name')

Se ambos os objetos DataFrame tiverem "old", então "old_x" e "old_y" aparecerão no resultado

Se os nomes das colunas nas duas tabelas forem diferentes, como criar um DataFrame3:

Você pode usar left_on e right_on quando quiser mesclar com DataFrame1:

pd.merge(test_DataFrame1,test_DataFrame3,how='outer',left_on=['name'],right_on=['user'])

A linha não mostra o mesmo efeito, sort sort:

pd.merge(test_DataFrame1,test_DataFrame2,how='outer',sort=True)

Acho que você gosta

Origin blog.csdn.net/m0_59596937/article/details/127235933
Recomendado
Clasificación