Operación condicional en columnas Pandas DataFrame

Supongamos que tiene una tienda en línea. El precio de los productos se actualiza con frecuencia. Mientras calcula el precio final del producto, verifica si el precio actualizado está disponible o no. Si no está disponible, utiliza el último precio disponible.

Solución #1: podemos usar una expresión condicional para verificar si la columna está presente o no. Si no está presente, calculamos el precio utilizando la columna alternativa.

# importing pandas as pd
import pandas as pd
  
# Create the dataframe
df = pd.DataFrame({'Date':['10/2/2011', '11/2/2011', '12/2/2011', '13/2/2011'],
                   'Product':['Umbrella', 'Matress', 'Badminton', 'Shuttle'],
                   'Last Price':[1200, 1500, 1600, 352],
                   'Updated Price':[1250, 1450, 1550, 400],
                   'Discount':[10, 10, 10, 10]})
  
# Print the dataframe
print(df)

Producción :

Ahora comprobaremos si el precio actualizado está disponible o no. Si no está disponible, aplicaremos el descuento del 10% en la columna ‘Último precio’ para calcular el precio final.

# Check if the updated price is available or not
if 'Updated Price' in df.columns:
    df['Final cost'] = df['Updated Price'] - (df['Updated Price']*0.1)
  
else :
    df['Final cost'] = df['Last Price'] - (df['Last Price']*0.1)
  
# Print the Dataframe
print(df)

Producción :

Como podemos ver en el resultado, como la columna ‘Actualizar precio’ estaba disponible, el ‘Costo final’ se calculó sobre el precio actualizado.
 
Ahora, consideremos un escenario en el que el ‘Precio actualizado’ no está disponible.

# importing pandas as pd
import pandas as pd
  
# Create the dataframe
df = pd.DataFrame({'Date':['10/2/2011', '11/2/2011', '12/2/2011', '13/2/2011'],
                   'Product':['Umbrella', 'Matress', 'Badminton', 'Shuttle'],
                   'Last Price':[1200, 1500, 1600, 352],
                   'Discount':[10, 10, 10, 10]})
  
# Print the dataframe
print(df)

Producción :

Ahora comprobaremos si el precio actualizado está disponible o no. Si no está disponible, aplicaremos el descuento del 10% en la columna ‘Último precio’ para calcular el precio final.

# Check if the updated price is available or not
if 'Updated Price' in df.columns:
    df['Final cost'] = df['Updated Price'] - (df['Updated Price']*0.1)
  
else :
    df['Final cost'] = df['Last Price'] - (df['Last Price']*0.1)
  
# Print the Dataframe
print(df)

Producción :

 

Solución #2: Podemos usar la issubset()función de Python para verificar si las columnas deseadas están presentes en el conjunto o no.

# importing pandas as pd
import pandas as pd
  
# Create the dataframe
df = pd.DataFrame({'Date':['10/2/2011', '11/2/2011', '12/2/2011', '13/2/2011'],
                   'Product':['Umbrella', 'Matress', 'Badminton', 'Shuttle'],
                   'Last Price':[1200, 1500, 1600, 352],
                   'Updated Price':[1250, 1450, 1550, 400],
                   'Discount':[10, 10, 10, 10]})
  
# Print the dataframe
print(df)

Producción :

Ahora comprobaremos si el precio actualizado está disponible o no. Si no está disponible, aplicaremos el descuento del 10% en la columna ‘Último precio’ para calcular el precio final.

# Check if the updated price is available or not
if {'Updated Price', 'Discount'}.issubset(df.columns):
    df['Final cost'] = df['Updated Price'] - (df['Updated Price']*0.1)
  
elif {'Last Price', 'Discount'}.issubset(df.columns):
    df['Final cost'] = df['Last Price'] - (df['Last Price']*0.1)
  
# Print the Dataframe
print(df)

Salida:

como podemos ver en la salida, como la columna ‘Actualizar precio’ estaba disponible, el ‘Costo final’ se calculó sobre el precio actualizado.

Ahora, consideremos un escenario en el que el ‘Precio actualizado’ no está disponible.

# importing pandas as pd
import pandas as pd
  
# Create the dataframe
df = pd.DataFrame({'Date':['10/2/2011', '11/2/2011', '12/2/2011', '13/2/2011'],
                   'Product':['Umbrella', 'Matress', 'Badminton', 'Shuttle'],
                   'Last Price':[1200, 1500, 1600, 352],
                   'Discount':[10, 10, 10, 10]})
  
# Print the dataframe
print(df)

Producción :

Ahora comprobaremos si el precio actualizado está disponible o no. Si no está disponible, aplicaremos el descuento del 10% en la columna ‘Último precio’ para calcular el precio final.

# Check if the updated price is available or not
if {'Updated Price', 'Discount'}.issubset(df.columns):
    df['Final cost'] = df['Updated Price'] - (df['Updated Price']*0.1)
  
elif {'Last Price', 'Discount'}.issubset(df.columns):
    df['Final cost'] = df['Last Price'] - (df['Last Price']*0.1)
  
# Print the Dataframe
print(df)

Salida:

como podemos ver en la salida, como la columna ‘Actualizar precio’ no estaba disponible, el ‘Coste final’ se calculó sobre la base del último precio.

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 *