2016-06-08 38 views
2

成對點的產品有一個數據幀我我怎麼總結列

df = pd.DataFrame(np.random.rand(10, 10)) 

我想借此奇數列的成對點產品與偶數行再總結起來。所以列0與列1,列2與列3,依此類推。

我做

df.mul(df.shift(axis=1)).sum().sum() 

但是,這讓我列1和2,2和3,3和4,這是不是我想要的。

回答

1

嘗試:

(df.iloc[:, ::2].values * df.iloc[:, 1::2].values).sum() 
2

,元素方式乘法與和減少可能被認爲是積減少。在這種情況下,我們可以使用NumPy's tensordot,就像這樣 -

# Extract the elements as a NumPy array 
arr = df.get_values() 

# Perform dot product between odd and even columns to get the desired output 
out = np.tensordot(arr[:,::2],arr[:,1::2])