Je les listes suivantes:Déplacement fenêtre Somme produit Calcul Python
a= [1,2,3,4,5,6,7,8,9,10,11,12]
wts= [0.055555556,0.055555556,0.055555556,0.055555556,0.055555556,0.055555556,0.055555556,0.055555556,0.055555556,0.10,0.10,0.30]
Le résultat souhaité est
result = [8.2,7.76,7.848,7.9504,8.179253333,8.420282667,8.628383467,8.790601973,8.894139057,8.930025594,8.891166196,8.770706404]
Le résultat est le produit d'une somme fenêtre mobile de la liste « a » et liste « WTS '.
Par exemple Résultat 8.2 est obtenu par code
sum(map(lambda xi, yi: xi * yi,x,wt))
Le résultat est obtenu par une nouvelle fenêtre d'une obtenue en ajoutant 8.2 à la liste « a ».
La nouvelle liste a doit être l'endroit où le résultat du résultat ci-dessus est ajouté.
a = [1,2,3,4,5,6,7,8,9,10,11,12,8.2]
Maintenant, pour calculer la valeur suivante de la liste des résultats c.-à-résultat [1] = 7,76, il devrait être le SUMPRODUCT de
a = [2,3,4,5,6,7,8,9,10,11,12,8.2] and
wts = [0.055555556,0.055555556,0.055555556,0.055555556,0.055555556,0.055555556,0.055555556,0.055555556,0.055555556,0.10,0.10,0.30]
La liste « WTS » est la liste fixe et seulement « » serait déplacer la fenêtre, avec le nouveau résultat étant ajouté à un. Tout script python pour y parvenir serait d'une grande aide ici.
Basé sur le ci-dessous, j'applique la fonction ci-dessous à une base de données. Pourriez-vous s'il vous plaît jeter un peu de lumière sur la façon dont j'applique cette fonction à une base de données basée sur plusieurs groupes (basé sur Groupby).
def wma(Curr,wts):
Curr.values.tolist()
wts.values.tolist()
len_list = len(Curr)
# Create a fixed sized queue
q = deque(maxlen=len_list)
# Add list a to q
q.extend(Curr)
i = 0
result = []
while i < len(a):
val = sum([x*y for x, y in zip(q, wts)])
q.append(val)
result.append(float(round(val, 2)))
i += 1
return result
Par exemple j'ai une trame de données avec 5 colonnes à savoir (colonne A, colonne B, colonne C, poids, courant). J'applique la fonction ci-dessus en utilisant le code ci-dessous
s1 = s1.groupby(['Column A', 'Column B', 'Column C']).apply(wma(df['Current'],df['Weights']))
Je reçois l'erreur suivante: TypeError: Type unhashable: 'liste'. Toute aide serait d'une grande aide.
Merci pour cette réponse. Ce Deque est un nouveau concept que j'ai appris aujourd'hui. – ceeka9388
@ ceeka9388, cela peut être fait en utilisant 'list' aussi, c'est juste que vous avez besoin de' pop' depuis la position '0th' et' append' le 'val', mais en utilisant' queue' est beaucoup plus rapide. – JkShaw
J'ai besoin d'aide pour appliquer cette fonction à un dataframe. Toutes les suggestions seraient d'une grande aide ici. – ceeka9388