I have two dataframes of errors in 3 axis (x, y, z):
df1 = pd.DataFrame([[0, 1, 2], [-1, 0, 1], [-2, 0, 3]], columns = ['x', 'y', 'z'])
df2 = pd.DataFrame([[1, 1, 3], [1, 0, 2], [1, 0, 3]], columns = ['x', 'y', 'z'])
I'm looking for a fast way to find the Cartesian sum of the square of each row of the two dataframes.
EDIT My current solution:
cartesian_sum = list(np.sum(list(tup), axis = 0).tolist() 
                    for tup in itertools.product( (df1**2).to_numpy().tolist(),
                                                  (df2**2).to_numpy().tolist() ) )
cartesian_sum
>>> 
[[1, 2, 13],
 [1, 1, 8],
 [1, 1, 13],
 [2, 1, 10],
 [2, 0, 5],
 [2, 0, 10],
 [5, 1, 18],
 [5, 0, 13],
 [5, 0, 18]]
is too slow (~ 2.4 ms; compared to the solutions based purely in Pandas running ~ 8-10 ms).
This is similar to the related question (link here) but using itertools is so slow. Is there a faster way of doing this in Python?
 
    