Kronecker 产品 pandas 数据框

Mik*_*ike 4 dataframe pandas

我有两个数据框

    A  B
0   1  2
1   1  2
2   1  2
Run Code Online (Sandbox Code Playgroud)

    C  D
0   1  4
1   2  5
2   3  6
Run Code Online (Sandbox Code Playgroud)

我需要叉积(AC、AD、BC、BD)的平均值。因此我希望能够计算

    AC  AD BC BD 
0   1   4  2   8
1   2   5  4  10
2   3   6  6  12
Run Code Online (Sandbox Code Playgroud)

但到目前为止我还无法这样做。我尝试了乘法等,但没有成功。显然我可以使用循环来做到这一点,但是有没有一种优雅的方法来做到这一点?

干杯,迈克

piR*_*red 6

考虑数据框d1d2

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

那么克罗内克积就是

kp = pd.DataFrame(np.kron(d1, d2), columns=pd.MultiIndex.from_product([d1, d2]))
kp
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


注:
这相当于展平outer每对列的乘积。 不是产品cross