Как вернуть более одного значения из DataFrame.groupby.rolling.apply? - PullRequest
1 голос
/ 01 мая 2019

Я хочу применить функцию к скользящему окну.Я организую данные, используя метод groupby.Но функция должна возвращать два значения;когда я это делаю, я получаю сообщение об ошибке:

cannot convert the series to <type 'float'>

Когда я запускаю df.groupby(['A'])['B'].rolling(2).apply(function) с функцией, которая возвращает единственное значение, она работает.Но затем я модифицирую код, чтобы использовать функцию, которая возвращает два значения:

df=pd.DataFrame({'A':[1,1,1,1,2,2,2,2],'B':[0.2,0.5,1.0,1.2,1.7,1.9,2.1,2.4]})

def basic_function(y):
    sum1=0
    sum2=0
    for x in y:
        sum1=sum1+x*x
        sum2=sum2+x*x*x
    return sum1/len(y),sum2/len(y)

df.groupby(['A'])['B'].rolling(2).apply(basic_function)

Я ожидал, что код добавит два новых столбца в фрейм данных.Вместо этого я получаю сообщение об ошибке.

...