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的解决方案。请参阅:[链接]()