Righe di dataframe volte colonna di un altro dataframe
Nov 15 2020
Ho cercato di ottenere la media ponderata di ogni prodotto per ogni persona. Quindi per Tom, dovrebbe avere 20x1.0 + 19x2.0 + 10x3.0, spero anche di avere i pesi * prodotto anche da ciascun prodotto.
data = {'Name':['Tom', 'nick', 'krish', 'jack'], '1stproducts':[20, 21, 19, 18], '2ndproduct': [19, 28, 10, 10],
'3rdproduct': [10, 18, 20, 30]}
df = pd.DataFrame(data)
weights = {"weights": [1.0, 2.0, 3.0]}
df2 = pd.DataFrame(weights)
Ho provato pd.DataFrame.multiply(df, df2, axis = 1), ma ho NaN per tutti i valori.
Risposte
1 ColeHoward Nov 15 2020 at 03:13
L'allineamento dell'indice df2risolverà il tuo problema. E facendo riferimento alla colonna dei pesi in df2.
df2 = pd.DataFrame(weights, index=['1stproducts', '2ndproduct', '3rdproduct'])
In [26]: df[['1stproducts', '2ndproduct', '3rdproduct']] * df2.weights
Out[26]:
1stproducts 2ndproduct 3rdproduct
0 20.0 38.0 30.0
1 21.0 56.0 54.0
2 19.0 20.0 60.0
3 18.0 20.0 90.0
Domanda simile qui: come calcolare la somma ponderata di tutti gli elementi in una riga in panda?