Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 访问滚动调用中的所有列_Python_Pandas - Fatal编程技术网

Python 访问滚动调用中的所有列

Python 访问滚动调用中的所有列,python,pandas,Python,Pandas,我对计算滚动窗口上的统计数据感兴趣。统计数据将在多个列上计算。下面是一个玩具示例,用于计算滚动窗口上的回归系数 def regression_coef(df): if df.shape[0]==0: return np.array([np.NaN, np.NaN]) y = df.y.values X = df.drop('y',axis = 1).values reg = LinearRegression().fit(X,y).coef_.rou

我对计算滚动窗口上的统计数据感兴趣。统计数据将在多个列上计算。下面是一个玩具示例,用于计算滚动窗口上的回归系数

def regression_coef(df):
    if df.shape[0]==0:
        return np.array([np.NaN, np.NaN])
    y = df.y.values
    X = df.drop('y',axis = 1).values
    reg = LinearRegression().fit(X,y).coef_.round(2)
    return reg

time = np.arange(5,3605,5)
x = np.random.normal(size = time.size)
z = np.random.normal(size = time.size)
y = 2*x+z + np.random.normal(size = time.size) 
df = pd.DataFrame({'x':x, 'z':z, 'y':y}, index = pd.to_datetime(time, unit ='s'))
当我调用
df.rolling('20t').apply(回归系数)
时,我得到以下错误:
AttributeError:'numpy.ndarray'对象没有属性“y”
。这使我相信,
df.rolling
is计算单个列的统计信息,而不是在20分钟的窗口内找到所有观察结果


我怎样才能实现我想要的?也就是说,如何在滚动窗口中计算回归系数?特别是,我感兴趣的是,如果使用偏移量和现有的pandas API,是否可以解决此问题。

可能重复@tvgriek此问题使用偏移量而不是观察数。我认为这与您链接的问题不同。您是否尝试过其中定义的自定义滚动功能?我已经检查了滚动行为,它堆叠所有列并遍历所有值。总长度:3 x 720。您可以实现一个处理堆叠列的自定义函数。@tvgriek我已经在该答案中尝试了该函数。它不适用于偏移。我有能力编写自己的函数来解决这个问题,但我想知道现有的pandas API是否可行。@Demetri Pananos您找到解决方案了吗?我有一个类似的问题,需要将
df
的所有列传递给函数。希望有一个基于API的解决方案。请参阅:[link]()可能与@tvgriek重复此问题使用偏移量而不是观察数。我认为这与您链接的问题不同。您是否尝试过其中定义的自定义滚动功能?我已经检查了滚动行为,它堆叠所有列并遍历所有值。总长度:3 x 720。您可以实现一个处理堆叠列的自定义函数。@tvgriek我已经在该答案中尝试了该函数。它不适用于偏移。我有能力编写自己的函数来解决这个问题,但我想知道现有的pandas API是否可行。@Demetri Pananos您找到解决方案了吗?我有一个类似的问题,需要将
df
的所有列传递给函数。希望有一个基于API的解决方案。请参阅:[链接]()