Python ItErrorws():为每一行提供相同的结果

Python ItErrorws():为每一行提供相同的结果,python,python-3.x,windows,Python,Python 3.x,Windows,我正在尝试为几行上的几个滞后创建自动方差。 在这个例子中,我得到了两行和11个滞后 在我的示例中,我得到了以下两行: 正文: array([[164, 148, 152, 144, 155, 125, 153, 146, 138, 190, 192, 192], [239, 379, 105, 150, 400, 326, 134, 441, 199, 431, 203, 425]], dtype=int64) 我想得到滞后0,1…11的每一行的自协方差 现在,我得到了以下代码:

我正在尝试为几行上的几个滞后创建自动方差。 在这个例子中,我得到了两行和11个滞后

在我的示例中,我得到了以下两行:

正文:

 array([[164, 148, 152, 144, 155, 125, 153, 146, 138, 190, 192, 192],
   [239, 379, 105, 150, 400, 326, 134, 441, 199, 431, 203, 425]], dtype=int64)
我想得到滞后0,1…11的每一行的自协方差

现在,我得到了以下代码:

 import statsmodels as sm
 import numpy as np
 import pandas as pd
 df = pd.read_excel("directory\\file.xlsx")

def autocov(row):
    x = sm.tsa.stattools.acovf(df.T[row], unbiased=False, demean=True, 
    fft=None, missing='none')
    autocov_df = pd.DataFrame(x)

for index,row in df.iterrows():
     print(x)
这将向我打印以下数组:

正文:

 [ 447.52083333  191.93229167   94.51041667  -26.36979167  -87.58333333
   -97.90104167 -121.86458333  -54.328125    -94.47916667  -31.19270833
   -12.65625      16.171875  ]
 [ 447.52083333  191.93229167   94.51041667  -26.36979167  -87.58333333
   -97.90104167 -121.86458333  -54.328125    -94.47916667  -31.19270833
  -12.65625      16.171875  ]
但是,正如您所看到的,它为两行打印相同的值

我在代码中做错了什么

这是我的首选输出:

[ 447.52083333  191.93229167   94.51041667  -26.36979167  -87.58333333
  -97.90104167 -121.86458333  -54.328125    -94.47916667  -31.19270833
  -12.65625      16.171875  ]
[ 14887., -7237., 1811.,-198.5,
  2903.08333333,  -3346.41666667,   1140.33333333,  -1207.25      ,
  1141.08333333,  -3307.75      ,   1402.33333333,   -544.41666667]

您正在使用
索引,行
进行迭代,但打印常量值:

for index,row in df.iterrows():
    print(autocov_df.T)
autocov_df.T
不依赖于
索引

您需要使用迭代变量来查看差异,如:

for index,row in df.iterrows():
    y = some_function(index,row)
    print(y)
在您的示例中,您不调用
autocov
,并且该函数中没有return语句:

def autocov(row):
    x = sm.tsa.stattools.acovf(df.T[row], unbiased=False, demean=True, 
    fft=None, missing='none')
    autocov_df = pd.DataFrame(x)
    return(autocov_df)

for index,row in df.iterrows():
     x = autocov(index)
     print(x)

请注意,您的参数命名可能会产生误导。

您想打印什么?我用首选输出编辑了我的问题。这就是我想要实现的(我的df最终将有数千行)我尝试了您的解决方案,并将其嵌入到我的代码中,如下所示:对于索引,df中的行。ItErrorws():print(row)print(autocov_df)无论答案如何更新,它都会给我相同的结果。需要导入
statsmodels.tsa.stattools
以运行示例。