¿Cómo se ponderan las columnas del marco de datos de forma iterativa para el promedio ponderado?

rick458

Tengo un marco de datos con varias columnas que tienen valores flotantes numéricos. Lo que quiero hacer es dar pesos fraccionarios a cada columna y calcular su promedio para almacenarlo y agregarlo al mismo df.

Digamos que tenemos las columnas: s1, s2, s3 Quiero darles los pesos: w1, w2, w3 respectivamente

Pude hacer esto manualmente mientras experimentaba con todos los valores en la mano. Pero cuando voy a un formato de lista, me da un error. Estaba tratando de hacerlo mediante iteración y adjunté mi código a continuación, pero me estaba dando un error. También adjunté mi código manual que funcionó, pero lo necesita de primera mano.

Código que no funcionó:

score_df["weighted_avg"] += weight * score_df[feature]

Código manual que funcionó pero no con listas:

df["weighted_scores"] = 0.5*df["s1"] + 0.25*df["s2"] + 0.25*df["s3"]
Erfan

Podemos usar la transmisión numpy para esto, ya que los pesos tienen la misma forma que el eje de su columna:

# given the following example df
df = pd.DataFrame(np.random.rand(10,3), columns=["s1", "s2", "s3"])

print(df)
    s1   s2   s3
0 0.49 1.00 0.50
1 0.65 0.87 0.75
2 0.45 0.85 0.87
3 0.91 0.53 0.30
4 0.96 0.44 0.50
5 0.67 0.87 0.24
6 0.87 0.41 0.29
7 0.06 0.15 0.73
8 0.76 0.92 0.69
9 0.92 0.28 0.29
weights = [0.5, 0.25, 0.25]
df["weighted_scores"] = df.mul(weights).sum(axis=1)

print(df)
    s1   s2   s3  weighted_scores
0 0.49 1.00 0.50             0.62
1 0.65 0.87 0.75             0.73
2 0.45 0.85 0.87             0.66
3 0.91 0.53 0.30             0.66
4 0.96 0.44 0.50             0.71
5 0.67 0.87 0.24             0.61
6 0.87 0.41 0.29             0.61
7 0.06 0.15 0.73             0.25
8 0.76 0.92 0.69             0.78
9 0.92 0.28 0.29             0.60

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Cómo recorrer las columnas del marco de datos para ordenar el marco de datos de forma iterativa

¿Cómo obtener el promedio de fila para ciertas columnas en el marco de datos r?

Promedio ponderado anual del marco de datos de pandas

¿Cómo pivotar un marco de datos de pandas para incluir un promedio ponderado?

Calcular el promedio ponderado de mi marco de datos

Calcule el promedio ponderado usando un pandas / marco de datos

¿Cómo agregar columnas con el porcentaje promedio y el recuento promedio al marco de datos?

¿Cómo cambiar el nombre de las columnas del marco de datos Spark?

Cómo crear un marco de datos con el nombre de las columnas del diccionario

Cambiar el nombre de las columnas del marco de datos

Obtenga el cuadro delimitador para las coordenadas en las columnas del marco de datos

¿Cómo crear un nuevo marco de datos para cada columna recorriendo las columnas del marco de datos?

Cómo estandarizar las columnas seleccionadas en el marco de datos del panel

preservar el orden de las columnas del marco de datos mientras se adjunta

R: ¿Hay alguna forma de establecer el orden de las columnas del marco de datos en función de otro marco de datos que tenga columnas diferentes

No se puede acceder a las columnas del marco de datos

No se puede acceder a las columnas del marco de datos

La forma más eficiente de crear columnas de promedio ponderado desplazadas nuevas masivas en un marco de datos de pandas

¿Alguna forma de dividir la clave y el valor de una columna de un marco de datos en R y agregar las claves como nombre y valor de las columnas para cada fila del marco de datos?

Cómo usar la función vectorizada para verificar las columnas en el marco de datos

Promedio de datos sobre varias variables para varias columnas y almacenar en el marco de datos

Python: reestructura el marco de datos, mueve los nombres de las columnas a las filas, cambia la forma del marco de datos

¿Cómo se calcula el mínimo de las columnas del marco de datos de pandas, sin crear una columna temporal?

Cómo ordenar el valor de cada fila del marco de datos y devolver el nombre de las columnas ordenadas

¿Cómo reemplazar el nombre del país de las columnas del marco de datos por continente?

Obtener el valor promedio de cada hora para columnas específicas en el marco de datos

¿Cómo calcular los porcentajes de las columnas del marco de datos, cuando el tamaño del marco de datos es variable?

cómo obtener el promedio de los valores de la columna del marco de datos

groupby ponderado promedio y suma en el marco de datos de pandas