2017-11-10 10 views
1

を要素単位:次のように私が取得したい何パンダシリーズは、次のように私は2頭のパンダシリーズAとBを持っているmuplication

a = pd.series([1, 2, 3]) 

b = pd.series([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 

は、第三パンダシリーズです:

[[1, 2, 3], [8, 10, 12], [21, 24, 27]] 

私は次のことを試してみました操作:

a*b 

np.array(a)*np.array(b) 

np.multiple(a, b) 

a.multiple(b) 

はしかし、私は次のように同じエラーを取得しておいてください。

TypeError: can't multiply sequence by non-int of type 'float' 

これを行う正しい方法はなんですか?ありがとう!

答えて

1

使用numpy broadcastingdocs

c = np.array(b.values.tolist()) * a[:,np.newaxis]) 
[[ 1 2 3] 
[ 8 10 12] 
[21 24 27]] 

または:

c = np.array(b.values.tolist()) * a.values.reshape(len(a),-1) 
print (c) 
[[ 1 2 3] 
[ 8 10 12] 
[21 24 27]] 

そして:

s3 = pd.Series(c.tolist()) 
print (s3) 
0  [1, 2, 3] 
1  [8, 10, 12] 
2 [21, 24, 27] 
dtype: object 
+0

それは働きます!どうもありがとう!なぜ私のコードがうまくいかないのか理解できますか? – CathyQian

+0

パンダでは複数のリストに実装されていないので、あなたは 'a.mul(b)'を使うことはできないと思います。リスト付きの2d numpy配列を作成する必要があり、ここでnewaxisインデックス演算子はaに新しい '軸'を挿入し、2次元 '3x1配列 'にします。 – jezrael

+0

それは理にかなっています!再度、感謝します! – CathyQian

関連する問題