私はGraphlabを使用していますが、この質問はパンダにも当てはまると思います。PythonでSArrayの各要素の各値にどのように乗算するのですか?
import graphlab
sf = graphlab.SFrame({'id': [1, 2, 3], 'user_score': [{"a":4, "b":3}, {"a":5, "b":7}, {"a":2, "b":3}], 'weight': [4, 5, 2]})
'user_score'の各要素の値に 'weight'の数値を掛けた新しい列を作成します。つまり、
sf = graphlab.SFrame({'id': [1, 2, 3], 'user_score': [{"a":4, "b":3}, {"a":5, "b":7}, {"a":2, "b":3}], 'weight': [4, 5, 2]}, 'new':[{"a":16, "b":12}, {"a":25, "b":35}, {"a":4, "b":6}])
私は以下の単純な関数を書こうとしたが、役に立たなかった。何かご意見は?
def trans(x, y):
d = dict()
for k, v in x.items():
d[k] = v*y
return d
sf.apply(trans(sf['user_score'], sf['weight']))
これは、次のエラーメッセージました:私はpandas
データフレームを使用していますが、それはまた、あなたのケースで動作するはず
AttributeError: 'SArray' object has no attribute 'items'
applyは、定義によってベクトル化されていないことを意味します。 – Jeff
@Jeff、ご意見ありがとうございます!私は私の答えを修正しました – MaxU
@ジェフ、私は間違っている場合は私を修正してくださいが、私は 'df ['num_column']のようなものと思う。apply(np.sum)' - 列全体(要素ごとではない) - または間違っていると理解していますか? – MaxU