相关疑难解决方法(0)

Python pandas rolling_apply将两列输入到函数中

继续这个问题Python自定义函数使用rolling_apply进行pandas,关于使用rolling_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'])
Run Code Online (Sandbox Code Playgroud)

但稍微改变功能需要两列.

def gm(df,p):
    df = pd.DataFrame(df)
    v =((((df['A']+df['B'])+1).cumprod())-1)*p
    return v.iloc[-1]
Run Code Online (Sandbox Code Playgroud)

它会产生以下错误:

pd.rolling_apply(tmp,50,lambda x: gm(x,5))

  KeyError: u'no item named A'
Run Code Online (Sandbox Code Playgroud)

我认为这是因为lambda函数的输入是长度为50且仅在第一列的ndarray,并且不会将两列作为输入.有没有办法将两列作为输入并在rolling_apply函数中使用它.

再次感谢任何帮助......

python pandas

14
推荐指数
3
解决办法
1万
查看次数

标签 统计

pandas ×1

python ×1