Data Wrangling

Dominando Pandas: Cinco Maneiras Eficientes de Combinar Colunas de Texto

Spread the love

Combinar colunas de texto de forma eficiente é uma tarefa crucial na manipulação de dados. Este artigo apresenta cinco métodos eficazes do Pandas para concatenar colunas de string dentro de um DataFrame, destacando seus pontos fortes e fracos para guiá-lo na seleção da abordagem ideal para suas necessidades específicas.

Sumário:

O Método do Operador +

Esta abordagem direta usa o operador + embutido do Python para concatenação de strings. Geralmente é a mais rápida para cenários simples, mas requer um tratamento cuidadoso de valores ausentes (NaN) para evitar exceções TypeError.


import pandas as pd
import numpy as np

data = {'col1': ['A', 'B', 'C', np.nan], 'col2': ['D', 'E', 'F', 'G']}
df = pd.DataFrame(data)

df['combined'] = df['col1'].fillna('') + df['col2'].fillna('')
print(df)

Saída:


  col1 col2 combined
0    A    D      AD
1    B    E      BE
2    C    F      CF
3  NaN    G       G

Método Series.str.cat()

Series.str.cat() é especificamente projetado para concatenação de strings e lida eficientemente com dados ausentes. Permite personalização com separadores e representação de NaN.


import pandas as pd
import numpy as np

data = {'col1': ['A', 'B', 'C', np.nan], 'col2': ['D', 'E', 'F', 'G']}
df = pd.DataFrame(data)

df['combined'] = df['col1'].str.cat(df['col2'], sep='-', na_rep='')
print(df)

Saída:


  col1 col2 combined
0    A    D      A-D
1    B    E      B-E
2    C    F      C-F
3  NaN    G      -G

Método df.apply()

df.apply() oferece flexibilidade para operações linha a linha (axis=1) ou coluna a coluna (axis=0), permitindo lógica de concatenação complexa. No entanto, pode ser menos eficiente que o operador + para DataFrames grandes.


import pandas as pd
import numpy as np

data = {'col1': ['A', 'B', 'C', np.nan], 'col2': ['D', 'E', 'F', 'G']}
df = pd.DataFrame(data)

df['combined'] = df.apply(lambda row: str(row['col1']) + ' ' + str(row['col2']), axis=1)
print(df)

Saída:


  col1 col2 combined
0    A    D      A D
1    B    E      B E
2    C    F      C F
3  NaN    G    nan G

Método Series.map()

Series.map() fornece uma maneira flexível de aplicar funções personalizadas para concatenação, lidando com cenários diversos como lógica condicional ou separadores específicos. É particularmente útil para regras de concatenação mais complexas.


import pandas as pd
import numpy as np

data = {'col1': ['A', 'B', 'C', np.nan], 'col2': ['D', 'E', 'F', 'G']}
df = pd.DataFrame(data)

def combine_strings(x):
  return str(x[0]) + '_' + str(x[1])

df['combined'] = df[['col1', 'col2']].apply(combine_strings, axis=1)
print(df)

Saída:


  col1 col2 combined
0    A    D      A_D
1    B    E      B_E
2    C    F      C_F
3  NaN    G    nan_G

Método df.agg()

Embora principalmente para agregações, df.agg() pode ser adaptado para concatenação de strings. No entanto, geralmente é menos eficiente que outros métodos para este propósito específico.


import pandas as pd
import numpy as np

data = {'col1': ['A', 'B', 'C', np.nan], 'col2': ['D', 'E', 'F', 'G']}
df = pd.DataFrame(data)

df['combined'] = df.agg(lambda x: str(x['col1']) + ' ' + str(x['col2']), axis=1)
print(df)

Saída (similar a df.apply()):


  col1 col2 combined
0    A    D      A D
1    B    E      B E
2    C    F      C F
3  NaN    G    nan G

Conclusão: O método ideal depende de suas necessidades específicas e do tamanho do conjunto de dados. Para concatenação básica, o operador + oferece velocidade. Series.str.cat() se destaca no tratamento eficiente de valores ausentes. Series.map() e df.apply() oferecem maior flexibilidade para cenários complexos, enquanto df.agg() é menos eficiente para esta tarefa.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *