Python 不创建for循环或函数的每列上的线性回归

Python 不创建for循环或函数的每列上的线性回归,python,pandas,scipy,regression,Python,Pandas,Scipy,Regression,对数据帧中的每列或每行应用回归,而不使用for循环 关于这一点,也有类似的帖子,这会对每个“行”进行回归,但给出的答案是错误的。我无法对此发表评论,因为我没有足够的声誉,主要问题是,它接受列的值,但在每一行上使用apply函数 目前我只知道如何做每一个专栏如 np.random.seed(1997) df = pd.DataFrame(np.random.randn(10, 4)) first_stats = scipy.stats.linregress(df.index,df[0]) sec

对数据帧中的每列或每行应用回归,而不使用for循环

关于这一点,也有类似的帖子,这会对每个“行”进行回归,但给出的答案是错误的。我无法对此发表评论,因为我没有足够的声誉,主要问题是,它接受列的值,但在每一行上使用apply函数

目前我只知道如何做每一个专栏如

np.random.seed(1997)

df = pd.DataFrame(np.random.randn(10, 4))
first_stats = scipy.stats.linregress(df.index,df[0])
second_stats = scipy.stats.linregress(df.index,df[1])

我希望在不创建函数或循环的情况下找到答案,类似于;使用df.sum(),但不是sum,我想做一个回归,得到斜率、截距、r值、p值和标准误差。

看下面的例子:

import numpy as np
import pandas as pd
from scipy.stats import linregress

np.random.seed(1997)
df = pd.DataFrame(pd.np.random.rand(100, 10))

df.apply(lambda x: linregress(df.index, x), result_type='expand').rename(index={0: 'slope', 1: 
                                                                                  'intercept', 2: 'rvalue', 3:
                                                                                  'p-value', 4:'stderr'})

它应该返回你想要的

应将功能更改为<代码>lambda VAL:linregress(df.index,VAL)。除此之外,它做它所做的。