Использование roll_apply с функцией, которая требует 2 аргументов в Pandas

Я пытаюсь использовать rollapply с формулой, которая требует 2 аргумента. Насколько мне известно, единственный способ (если вы не создаете формулу с нуля) для расчета корреляции Кендалла Тау со стандартной коррекцией связи:

>>> import scipy
>>> x = [5.05, 6.75, 3.21, 2.66]
>>> y = [1.65, 26.5, -5.93, 7.96]
>>> z = [1.65, 2.64, 2.64, 6.95]
>>> print scipy.stats.stats.kendalltau(x, y)[0]
0.333333333333

Мне также известно о проблеме с rollapply и принятием двух аргументов, как описано здесь:

Смежный вопрос 1Github IssueСмежный вопрос 2

Тем не менее, я изо всех сил пытаюсь найти способ сделать кендаллтау вычисления на фрейме данных с несколькими столбцами на скользящей основе.

Мой фрейм данных примерно такой

A = pd.DataFrame([[1, 5, 1], [2, 4, 1], [3, 3, 1], [4, 2, 1], [5, 1, 1]], 
                 columns=['A', 'B', 'C'], index = [1, 2, 3, 4, 5])

Попытка создать функцию, которая делает это

In [1]:function(A, 3)  # A is df, 3 is the rolling window
Out[2]:
   A  B  C     AB     AC     BC  
1  1  5  2    NaN    NaN    NaN
2  2  4  4    NaN    NaN    NaN
3  3  3  1  -0.99  -0.33   0.33
4  4  2  2  -0.99  -0.33   0.33
5  5  1  4  -0.99   0.99  -0.99

В очень предварительном подходе я развил идею определения функции следующим образом:

def tau1(x):
    y = np.array(A['A']) #  keep one column fix and run it in the other two
    tau, p_value = sp.stats.kendalltau(x, y)
    return tau

 A['AB'] = pd.rolling_apply(A['B'], 3, lambda x: tau1(x))

Конечно, это не сработало. Я получил:

ValueError: all keys need to be the same shape

Я понимаю, это не тривиальная проблема. Я ценю любой вклад.

Ответы на вопрос(1)

Ваш ответ на вопрос