Ich habe ein Datenframe mit zwei Spalten: eine enthält eine Kategorie und die andere enthält einen 300-dimensionalen Vektor. Für jeden der Werte in der Kategorie-Spalte habe ich viele 300-dimensionale Vektoren. Was ich brauche, ist das Gruppieren des Datenrahmens durch die Kategorie-Spalte und gleichzeitig das Abrufen des Schwerpunktwertes aller Vektoren, die zu jeder Kategorie gehören.Python DataFrame - groupby und Schwerpunktberechnung
Category Vector
Balance [1,2,1,-5,....,9]
Inquiry [-5,3,1,5,...,10]
Card [-3,1,2,3,...1]
Balance [1,3,-2,1,-5,...,7]
Card [3,1,3,4,...,2]
also im obigen Fall würde der gewünschte Ausgang sein:
Category Vector
Balance [1,2.5,-0.5,-2,....,8]
Inquiry [-5,3,1,5,...,10]
Card [0,1,2.5,3.5,...,1.5]
I haben folgende Funktion schon geschrieben, die ein Array von Vektoren und berechnet seinen Schwerpunkt erhält:
import numpy as np
def get_intent_centroid(array):
centroid = np.zeros(len(array[0]))
for vector in array:
centroid = centroid + vector
return centroid/len(array)
also brauche ich nur einen schnellen Weg, um die obige Funktion zusammen mit einem groupby
Befehl auf dem Datenrahmen anzuwenden.
Bitte entschuldigen Sie meine Formatierung der Datenrahmen, aber ich weiß nicht, wie Sie sie richtig formatieren.
Nicht sicher, wie man Manipulation von Vektoren in einer Spalte in Pandas, aber Sie können versuchen, diese 2 Spalten zu Listen zu ändern, und dann die Manipulation und konvertieren zurück zu Pandas! – Tarun
Ich denke, dass das gesamte Berechnungsverfahren viel schneller wird, wenn ich keine Listen verwende. –
@Tarun Wie würdest du mit Listen umgehen? –