计算 Pandas 中每一列数据的自相关

问题描述

我想计算 Pandas 中每一列数据的一阶自相关。

我希望以下每个代码都给出相同的结果,但结果并不相同。

我应该使用哪个?

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

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

解决方法

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

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

如果仍然无效,请使用可重现的示例分享您的数据。

作为次要说明 - 使用 df[df.columns.to_list()] 并没有做任何特别的事情,因为您没有创建数据的子集,因此您只需执行 df.apply 并跳过 df[df.columns.to_list()]