¿Cómo llenar una columna con valores únicos en Pandas?

En el tutorial de hoy, aprenderemos cómo escribir valores específicos en una columna DataFrame de pandas nueva o existente. Veremos varios casos de uso.

Datos de ejemplo

Comenzaremos definiendo un conjunto de datos simple:

import pandas as pd dates = pd.date_range(start="3/1/24", end = '3/08/24', freq='B') sales = [284, 472, 361, 269, 386, 401]  revenue = pd.DataFrame (dict (dates=dates, sales=sales))  print (revenue.head())

Aquí están nuestros datos:

fechasventas0

1

2

3

4

5

2024-03-01 284
2024-03-04 472
2024-03-05 361
2024-03-06 269
2024-03-07 386
2024-03-08 401

Escriba un solo valor en una columna de pandas

El primer ejemplo será usar el método de asignación de marco de datos para agregar una columna que contenga un solo valor en nuestro marco de datos de pandas. En nuestro caso, configuraremos todas las columnas de la columna del canal para que sean iguales a Web.

revenue = revenue.assign(channel="Web") print (revenue.head(6))

Aquí están nuestros datos:

fechasventascanal0

1

2

3

4

5

2024-03-01 284 Web
2024-03-04 472 Web
2024-03-05 361 Web
2024-03-06 269 Web
2024-03-07 386 Web
2024-03-08 401 Web

Llenar columna con columna basada en otra columna

De la misma manera, nos gustaría introducir una nueva columna denominada margen. Históricamente, sabemos que nuestro margen operativo es del 25 %, por lo que aplicaremos esta lógica a los datos:

revenue = revenue.assign(margin = revenue['sales'] * 0.25)

También podemos usar una asignación directa o una función lambda aquí:

revenue['margin'] = revenue['sales'] * 0.25

O usando una función lambda:

revenue ['margin'] = revenue.apply(lambda r : r['sales'] *0.25 , axis = 1)

Si usa el método de aplicación con la función lambda, asegúrese de especificar el eje del parámetro = 1 para asegurarse de que el cálculo se ejecutará en el eje de la columna, lo que significa que la función se aplicará a cada fila.

Todo lo anterior dará como resultado lo siguiente:

print(revenue.head(6))
fechasmargen de ventas0

1

2

3

4

5

2024-03-01 284 71.00
2024-03-04 472 118.00
2024-03-05 361 90.25
2024-03-06 269 67.25
2024-03-07 386 96.50
2024-03-08 401 100.25

Llenar columna con números crecientes

En nuestro caso podemos usar el siguiente código:

revenue ['order'] = revenue.index + 1

Escribir valores aleatorios de la lista a la columna

A continuación, nos gustaría modificar la columna del canal y llenarla con valores aleatorios de una lista de Python.

import random rand_lst = random.choices (['Web', 'Indirect', 'Direct'], k = len(revenue) )

Seguir el aprendizaje

¿Cómo filtrar un DataFrame de pandas por valor en una o más columnas?