Al trabajar con conjuntos de datos en los que algunas características son cadenas de texto es habitual encontrarse con registros que no están en el formato deseado. Tanto valores que estas juntos como separados. Para solucionar el primer problema es necesario separar el texto de una característica en varias, lo que se explicó en una entrada anterior. Por otro lado, la solución del segundo problema requiere combinar dos columnas de texto en otra. Algo que en los objetos DataFrame de Pandas se puede conseguir mediante el uso de la propiedad .str.cat().
Un caso típico en el que puede ser necesario combinar dos columnas de texto en Pandas es cuando se tiene separados el nombre y los apellidos y se desea disponer del nombre completo. Por ejemplo, en un conjunto de datos como el siguiente.
import pandas as pd
users = pd.DataFrame({'first_name': ['Montgomery', 'Dagmar', 'Reeba', 'Shalom', 'Broddy', 'Aurelia'],
'last_name': ['Humes', 'Elstow', 'Wattisham', 'Alen', 'Keningham', 'Brechin'],
'age': [27, 41, 29, 29, 21, 33],
'gender': ['Male', 'Female', 'Female', 'Male', 'Male', 'Female']})
users first_name last_name age gender 0 Montgomery Humes 27 Male 1 Dagmar Elstow 41 Female 2 Reeba Wattisham 29 Female 3 Shalom Alen 29 Male 4 Broddy Keningham 21 Male 5 Aurelia Brechin 33 Female
.str.cat()Una opción para crear una nueva columna en el conjunto de datos users con el nombre completo es recurrir al método .str.cat(). Un método que existe en las series de Pandas y tiene como primer parámetro la serie que se desea concatenar. Así, para obtener el nombre completo solamente hay que escribir.
users['full_name'] = users.first_name.str.cat(users.last_name) users
first_name last_name age gender full_name 0 Montgomery Humes 27 Male MontgomeryHumes 1 Dagmar Elstow 41 Female DagmarElstow 2 Reeba Wattisham 29 Female ReebaWattisham 3 Shalom Alen 29 Male ShalomAlen 4 Broddy Keningham 21 Male BroddyKeningham 5 Aurelia Brechin 33 Female AureliaBrechin
En este caso se puede ver que ha combinado el nombre y los apellidos sin dejar un espacio en medio, por lo que el resultado no es legible. Problema que se puede solucionar fácilmente mediante el uso de la propiedad sep, mediante la cual es posible indicar una cadena para introducir entre las dos. De este modo, para introducir un espacio entre el nombre y el apellido solamente hay que hacer.
users['full_name'] = users.first_name.str.cat(users.last_name, sep=' ') users
first_name last_name age gender full_name 0 Montgomery Humes 27 Male Montgomery Humes 1 Dagmar Elstow 41 Female Dagmar Elstow 2 Reeba Wattisham 29 Female Reeba Wattisham 3 Shalom Alen 29 Male Shalom Alen 4 Broddy Keningham 21 Male Broddy Keningham 5 Aurelia Brechin 33 Female Aurelia Brechin
También es posible cambiar el orden, mostrar en primer lugar el apellido, e introducir una coma y un espacio entre los dos.
users['full_name'] = users.last_name.str.cat(users.first_name, sep=', ') users
first_name last_name age gender full_name 0 Montgomery Humes 27 Male Humes, Montgomery 1 Dagmar Elstow 41 Female Elstow, Dagmar 2 Reeba Wattisham 29 Female Wattisham, Reeba 3 Shalom Alen 29 Male Alen, Shalom 4 Broddy Keningham 21 Male Keningham, Broddy 5 Aurelia Brechin 33 Female Brechin, Aurelia
+Alternativamente también es posible concatenar el contenido de dos series Pandas mediante el uso del operador +. Un operador que, en el caso de grandes conjuntos de datos, es más eficiente que .str.cat().
users['full_name'] = users.last_name + ', ' + users.first_name users
first_name last_name age gender full_name 0 Montgomery Humes 27 Male Humes, Montgomery 1 Dagmar Elstow 41 Female Elstow, Dagmar 2 Reeba Wattisham 29 Female Wattisham, Reeba 3 Shalom Alen 29 Male Alen, Shalom 4 Broddy Keningham 21 Male Keningham, Broddy 5 Aurelia Brechin 33 Female Brechin, Aurelia
En esta entrada se ha visto cómo combinar dos columnas de texto en Pandas, pudiendo usar para ellos tanto el método .str.cat() como el operador +. Una operación que es complementaria a separar texto en columnas con Pandas que se ha visto anteriormente.
En un entrada previa explicamos qué son el WOE y el IV y por qué…
Seguimos evolucionando el laboratorio de Analytics Lane y hoy lanzamos la versión 1.1, disponible en:…
“El interés compuesto es la octava maravilla del mundo. El que lo entiende lo gana…
Tienes los datos de ventas de tres productos en dos años distintos y quieres saber…
Imagina la situación. Tu equipo lleva tres años con un modelo en producción. No es…
Cuando un banco evalúa una solicitud de crédito necesita responder a una pregunta aparentemente simple:…
This website uses cookies.