Get dot-product of dataframe with vector, and return dataframe, in Pandas

◇◆丶佛笑我妖孽 提交于 2019-12-21 09:29:06

问题


I am unable to find the entry on the method dot() in the official documentation. However the method is there and I can use it. Why is this?

On this topic, is there a way compute an element-wise multiplication of every row in a data frame with another vector? (and obtain a dataframe back?), i.e. similar to dot() but rather than computing the dot product, one computes the element-wise product.


回答1:


Here is an example of how to multiply a DataFrame by a vector:

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



回答2:


mul is doing essentially an outer-product, while dot is an inner product. Let me expand on the accepted answer:

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

So:

df.mul takes matrix of shape (6,2) and vector (6, 1) and returns matrix shape (6,2)

While:

df.dot takes matrix of shape (6,2) and vector (2,1) and returns (6,1).

These are not the same operation, they are outer and inner products, respectively.




回答3:


It's quite hard to say with a degree of accuracy.

Often, a method exists and is undocumented because it's considered internal by the vendor, and may be subject to change.

It could, of course, be a simple oversight by the folks who put together the documentation.

Regarding your second question; I don't really know about that - but it might be better to make a new S/O question for it. Just scanning the the API, could you do something with the DataFrame's .applymap(function) feature ?



来源:https://stackoverflow.com/questions/15753916/get-dot-product-of-dataframe-with-vector-and-return-dataframe-in-pandas

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!