Python | Creación de una columna de marco de datos de Pandas basada en una condición dada

Mientras operamos con datos, podría haber casos en los que nos gustaría agregar una columna en función de alguna condición. No existe ninguna función de biblioteca para lograr esta tarea directamente, por lo que vamos a ver las formas en que podemos lograr este objetivo.

Problema: dado un marco de datos que contiene los datos de un evento cultural, agregue una columna llamada «Precio» que contenga el precio de la entrada para un día en particular según el tipo de evento que se llevará a cabo ese día en particular.

Solución #1: podemos usar la técnica de comprensión de listas de Python para lograr esta tarea. La comprensión de listas es mayormente más rápida que otros métodos.

# importing pandas as pd
import pandas as pd
  
# Creating the dataframe
df = pd.DataFrame({'Date' : ['11/8/2011', '11/9/2011', '11/10/2011',
                                        '11/11/2011', '11/12/2011'],
                'Event' : ['Music', 'Poetry', 'Music', 'Music', 'Poetry']})
  
# Print the dataframe
print(df)

Producción :

Ahora agregaremos una nueva columna llamada ‘Precio’ al marco de datos. Para ello, utilizaremos la técnica de comprensión de listas. Establezca el precio en 1500 si el ‘Evento’ es ‘Música’, de lo contrario 800.

# Add a new column named 'Price'
df['Price'] = [1500 if x =='Music' else 800 for x in df['Event']]
  
# Print the DataFrame
print(df)

Salida:

como podemos ver en la salida, hemos agregado con éxito una nueva columna al marco de datos en función de alguna condición.
 
Solución #2: podemos usar DataFrame.apply()la función para lograr el objetivo. Podría haber casos en los que tengamos más de dos valores, en ese caso, podemos usar un diccionario para asignar nuevos valores a las claves. Esto proporciona mucha flexibilidad cuando tenemos una mayor cantidad de categorías para las que queremos asignar diferentes valores a la columna recién agregada.

# importing pandas as pd
import pandas as pd
  
# Creating the dataframe
df = pd.DataFrame({'Date' : ['11/8/2011', '11/9/2011', '11/10/2011',
                                        '11/11/2011', '11/12/2011'],
                'Event' : ['Music', 'Poetry', 'Music', 'Comedy', 'Poetry']})
  
# Print the dataframe
print(df)

Producción :

Ahora agregaremos una nueva columna llamada ‘Precio’ al marco de datos. Para ello utilizaremos DataFrame.apply()la función para lograr el objetivo. Fija el precio en 1500 si el ‘Evento’ es ‘Música’, 1200 si el ‘Evento’ es ‘Comedia’ y 800 si el ‘Evento’ es ‘Poesía’.

# Define a function to map the values
def set_value(row_number, assigned_value):
    return assigned_value[row_number]
  
# Create the dictionary
event_dictionary ={'Music' : 1500, 'Poetry' : 800, 'Comedy' : 1200}
  
# Add a new column named 'Price'
df['Price'] = df['Event'].apply(set_value, args =(event_dictionary, ))
  
# Print the DataFrame
print(df)

Salida:

como podemos ver en la salida, hemos agregado con éxito una nueva columna al marco de datos en función de alguna condición.
 
Solución #3: Podemos usar DataFrame.map()la función para lograr el objetivo. Es un método muy sencillo en el que usamos un diccionario para simplemente asignar valores a la columna recién agregada en función de la clave.

# importing pandas as pd
import pandas as pd
  
# Creating the dataframe
df = pd.DataFrame({'Date' : ['11/8/2011', '11/9/2011', '11/10/2011',
                                        '11/11/2011', '11/12/2011'],
                'Event' : ['Music', 'Poetry', 'Music', 'Comedy', 'Poetry']})
  
# Print the dataframe
print(df)

Producción :

Ahora agregaremos una nueva columna llamada ‘Precio’ al marco de datos. Para ello utilizaremos DataFrame.map()la función para lograr el objetivo. Fija el precio en 1500 si el ‘Evento’ es ‘Música’, 1200 si el ‘Evento’ es ‘Comedia’ y 800 si el ‘Evento’ es ‘Poesía’.

# Create the dictionary
event_dictionary ={'Music' : 1500, 'Poetry' : 800, 'Comedy' : 1200}
  
# Add a new column named 'Price'
df['Price'] = df['Event'].map(event_dictionary)
  
# Print the DataFrame
print(df)

Producción :

Publicación traducida automáticamente

Artículo escrito por Shubham__Ranjan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *