私は2つの列を持つデータフレームを持っています.1つはカテゴリを含み、もう1つは300次元ベクトルを含んでいます。 Category列の各値には、300次元のベクトルがたくさんあります。私が必要とするのは、カテゴリの列でデータフレームをグループ化すると同時に、各カテゴリに関係するすべてのベクトルの重心値を取得することです。Python DataFrame - グループバイと重心計算
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]
したがって、上記の場合には、所望の出力は次のようになります。
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はすでにベクトルの配列を取得し、その重心を計算する次の関数を記述した:
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)
上記の関数をデータフレーム上のgroupby
コマンドと一緒に適用するための素早い方法が必要です。
私のデータフレームの書式は間違いありませんが、正しくフォーマットする方法はわかりません。
パンダの列のベクトルを操作する方法がわかりませんが、これらの2つの列をリストに変更してから操作して、パンダに戻すことができます! – Tarun
私は、リストを使わないと計算の手続きがずっと速くなると思います。 –
@ Tarunリストを使ってどのようにアプローチしますか? –