Python 计算熊猫中每列数据的自相关

Python 计算熊猫中每列数据的自相关,python,pandas,dataframe,autocorrelation,Python,Pandas,Dataframe,Autocorrelation,我想计算每一列数据的一阶自相关系数 我希望下面的每一个代码都给出相同的结果,但结果不一样 我应该用哪一个 df[df.columns.to_list()].apply(lambda x: x.corr(x.shift())) 或 第二个应该是df[df.columns.to_list()].apply(lambda x:x.autocorr()),因为您需要内括号来调用autocorr函数 这些代码段应该给出完全相同的结果,因为autocorr的实现是一行代码:self.corr(self.s

我想计算每一列数据的一阶自相关系数

我希望下面的每一个代码都给出相同的结果,但结果不一样

我应该用哪一个

df[df.columns.to_list()].apply(lambda x: x.corr(x.shift()))


第二个应该是
df[df.columns.to_list()].apply(lambda x:x.autocorr())
,因为您需要内括号来调用
autocorr
函数

这些代码段应该给出完全相同的结果,因为
autocorr
的实现是一行代码:
self.corr(self.shift(lag))
,这与第一个代码段相同

如果这仍然不起作用,请与可复制的示例共享您的数据


作为第二个注意事项,使用
df[df.columns.to_list()]
没有任何特殊作用,因为您没有创建数据的子集,所以您只需执行
df。应用
并跳过
df[df.columns.to_list()]

谢谢您的回复。实际上,当我添加括号时,现在显示的结果与方法相同。为什么代码仍然在没有括号的情况下运行?代码之所以运行,是因为在python中,函数是对象。因此
x.autocorr
只是获取附加到对象
x
(a
pd.Series
对象)的函数
autocorr
。现在这个函数本身也是一个对象——如果不添加括号,将返回这个函数。您需要括号来调用函数,并使其实际执行您期望的操作。您能告诉我为什么在下面的链接中,“在第一个答案中,
pd.Series.pct\u change
不使用括号吗?当我添加括号时,它甚至不起作用!!!我在理解这个概念时遗漏了什么?是的,这是一个将函数作为对象传递的好例子。本质上,函数调用是延迟的,因此
groupby
操作可以为其提供参数。虽然这不是熊猫的具体情况,但您可以阅读更多关于熊猫的信息
df[df.columns.to_list()].apply(lambda x: x.autocorr)