如何在Pandas bygroup中应用linregress

时间:2013-02-08 14:46:31

标签: python pandas

我想在Pandas ByGroup中应用scipy.stats.linregress。我查看了文档,但我能看到的是如何将某些内容应用于单个列,如

grouped.agg(np.sum)

或类似

的功能
grouped.agg('D' : lambda x: np.std(x, ddof=1)) 

但是如何应用具有两个输入X和Y的linregress?

1 个答案:

答案 0 :(得分:6)

linregress函数以及许多其他scipy / numpy函数接受" array-like" X和Y,系列和DataFrame都可以获得资格。

例如:

from scipy.stats import linregress
X = pd.Series(np.arange(10))
Y = pd.Series(np.arange(10))

In [4]: linregress(X, Y)
Out[4]: (1.0, 0.0, 1.0, 4.3749999999999517e-80, 0.0)

事实上,能够使用scipy(和numpy)功能是熊猫杀手功能之一!

因此,如果您有一个DataFrame,您可以在其列(系列)上使用linregress:

linregress(df['col_X'], df['col_Y'])

如果使用groupby,您可以类似地apply(对每个组):

grouped.apply(lambda x: linregress(x['col_X'], x['col_Y']))