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 +
- Método Series.str.cat()
- Método df.apply()
- Método Series.map()
- Método df.agg()
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.