2013-04-02 21 views
7

dot()in the official documentationのエントリが見つかりません。しかし、方法はそこにあり、私はそれを使用することができます。どうしてこれなの?パンダでデータフレームのベクトル積を返し、データフレームを返す

このトピックでは、データフレーム内のすべての行を別のベクトルと要素的に乗算する方法はありますか?すなわち、dot()に類似しているが、内積を計算するのではなく、要素ごとの積を計算する。

+0

[githubの問題(https://github.com/pydata/pandas/issues)]として投稿できます。ドットでdocstringをチェックアウトすると、それは何をするのかを伝えます(ipythonを使っているなら 'df.dot? 'を使います)。 –

答えて

8

ベクターによりデータフレームを乗算する方法の例である:

In [60]: df = pd.DataFrame({'A': [1., 1., 1., 2., 2., 2.], 'B': np.arange(1., 7.)}) 

In [61]: vector = np.array([2,2,2,3,3,3]) 

In [62]: df.mul(vector, axis=0) 
Out[62]: 
    A B 
0 2 2 
1 2 4 
2 2 6 
3 6 12 
4 6 15 
5 6 18 
+0

ありがとうございます。 'dot()'が公式文書の一部ではない理由を知っていますか? –

+2

パンダには2つの 'ドット'メソッドがあります。 'Series.dot'は、' Series'がNumPyの 'ndarray'のサブクラスであるため、' ndarray.dot'から継承されます。その[here](http://docs.scipy.org/doc/numpy/reference/generated/numpy.dot.html)のドキュメントを見つけることができます。 'DataFrame.dot'に関しては、私が推測していることは、単にドキュメント化していないということです。 (これは 'pandas/core/frame.py'の定義を見れば分かります) – unutbu

+1

更新:' pandas.Series'はもはや 'ndarray'のサブクラスではありませんが、' 'ドット'メソッド](http://pandas.pydata.org/pandas-docs/version/0.13.1/generated/pandas.Series.dot.html)を参照してください。 – unutbu

1

正確さは言うまでもありません。

多くの場合、方法は存在し、ベンダーによって内部的と見なされるため、文書化されていないため、変更される可能性があります。

もちろん、ドキュメントをまとめる人々が簡単に見落とすことができます。

2番目の質問については、私はそれについて実際には分かっていませんが、新しいS/O質問をする方がよいかもしれません。 APIをスキャンするだけで、DataFrameの.applymap(機能)機能で何かできますか?ここ

6

乗算は、基本的に外製品を行っています。私の線形代数記憶が正しいなら、ドットは内積です。私は受け入れ答えを拡張してみましょう:

だから、
In [13]: df = pd.DataFrame({'A': [1., 1., 1., 2., 2., 2.], 'B': np.arange(1., 7.)}) 

In [14]: v1 = np.array([2,2,2,3,3,3]) 

In [15]: v2 = np.array([2,3]) 

In [16]: df.shape 
Out[16]: (6, 2) 

In [17]: v1.shape 
Out[17]: (6,) 

In [18]: v2.shape 
Out[18]: (2,) 

In [24]: df.mul(v2) 
Out[24]: 
    A B 
0 2 3 
1 2 6 
2 2 9 
3 4 12 
4 4 15 
5 4 18 

In [26]: df.dot(v2) 
Out[26]: 
0  5 
1  8 
2 11 
3 16 
4 19 
5 22 
dtype: float64 

df.mul

(6,2)形状の行列(6,2)とベクトル(6,1)を取り、マトリクス状を返します。

中:

df.dotは、形状(6,2)とベクトル(2,1)の行列をとり、(6,1)を返します。

これはそれぞれ同じ動作ではなく、それぞれ外側と内側の製品です(考えています)。

+1

ありがとう、私はこれが最も有益な答えをここに見つけました。パンダの医者よりも優れています。 – smci

関連する問題