したがって、長さの異なる2つのシリーズがある場合、これでほとんどの方法が得られると思います. これは非常に手動のプロセスのように思えますが、パンダや NumPy 関数を使用する別の方法は考えられません。
>>>> a = Series([1, 3, 3, 5, 5])
>>>> b = Series([5, 10])
最初に行の値a
を DataFrame に変換し、この Series のコピーを、列seriesの値と同じ数の新しい列の形式で作成します。b
>>>> result = DataFrame(a)
>>>> for i in xrange(len(b)):
result[i] = a
0 1
0 1 1
1 3 3
2 3 3
3 5 5
4 5 5
b
次に、 DataFrame を介してシリーズをブロードキャストできresult
ます。
>>>> result = result.mul(b)
0 1
0 5 10
1 15 30
2 15 30
3 25 50
4 25 50
私が選択した例では、最初のシリーズが原因でインデックスが重複することになります。インデックスは一意の識別子のままにしておくことをお勧めします。そうしないと、複数の行が割り当てられているインデックスを選択すると、複数の値が返されます。必要に応じて、次の関数を使用して行ラベルと列ラベルを再インデックス化できます。
>>>> result.columns = b
>>>> result.set_index(a)
5 10
1 5 10
3 15 30
3 15 30
5 25 50
5 25 50
重複インデックスの例:
>>>> result.loc[3]
5 10
3 15 30
3 15 30