2016-10-01 129 views
2

我有兩個dataframes克羅內克積大熊貓dataframes

A B 
0 1 2 
1 1 2 
2 1 2 

C D 
0 1 4 
1 2 5 
2 3 6 

我需要的叉積的均值(AC,AD,BC,BD)。因此,我希望能夠計算

AC AD BC BD 
0 1 4 2 8 
1 2 5 4 10 
2 3 6 6 12 

但到目前爲止,我一直無法這樣做。我嘗試了繁殖等,但無濟於事。我可以很明顯地使用循環,但有沒有一種優雅的方式來做到這一點?

乾杯,邁克

+0

numpy的是可能做到這一點,'np.cron最簡單的方法(A,B)' – JohnE

回答

2

考慮dataframes d1d2

d1 = pd.DataFrame([[1, 2]] * 3, columns=list('AB')) 
d2 = pd.DataFrame(np.arange(1, 7).reshape(2, 3).T, columns=list('CD')) 

然後直積是

kp = pd.DataFrame(np.kron(d1, d2), columns=pd.MultiIndex.from_product([d1, d2])) 
kp 

enter image description here


注意
這相當於扁平化每對柱子的outer產品。 不是cross產品。