Следующее из этого вопроса Python custom function using rolling_apply for pandas, об использовании rolling_apply
. Хотя я прогрессировал с моей функции, я изо всех сил, чтобы справиться с функцией, которая требует двух или более столбцов в качестве входов:Python pandas roll_apply ввод двух столбцов в функцию
Создание же настройки, как и прежде
import pandas as pd
import numpy as np
import random
tmp = pd.DataFrame(np.random.randn(2000,2)/10000,
index=pd.date_range('2001-01-01',periods=2000),
columns=['A','B'])
Но изменение функции немного взять два колонны.
def gm(df,p):
df = pd.DataFrame(df)
v =((((df['A']+df['B'])+1).cumprod())-1)*p
return v.iloc[-1]
Это производит следующее сообщение об ошибке:
pd.rolling_apply(tmp,50,lambda x: gm(x,5))
KeyError: u'no item named A'
Я думаю, что это происходит потому, что вход в лямбда-функции является ndarray длиной 50 и только в первой колонке, и не принимает два столбцы в качестве входных данных. Есть ли способ получить оба столбца в качестве входов и использовать его в функции rolling_apply
.
Снова любая помощь будет принята с благодарностью ...
Спасибо за это, но пример функции 'gm' был просто макет пример .. .so я все еще хочу разобраться, что такое работа, чтобы получить две или более столбцов ... –