Python 如何创建一个函数来迭代列表,同时在数据帧中创建一个新列?

Python 如何创建一个函数来迭代列表,同时在数据帧中创建一个新列?,python,pandas,Python,Pandas,我想创建一个函数,返回包含不同窗口的移动平均数的多列。但我只返回了一列 这就是我尝试过的: [3] data = pd.read_csv('data.csv') [4] data.head() [4] close 0 126.70 1 127.30 2 127.38 3 128.44 4 128.77 [5] li = range(2,101) [6] def builder(data): for n in li

我想创建一个函数,返回包含不同窗口的移动平均数的多列。但我只返回了一列

这就是我尝试过的:

[3] data = pd.read_csv('data.csv')
[4] data.head()
[4]     close
    0   126.70
    1   127.30
    2   127.38
    3   128.44
    4   128.77
[5] li = range(2,101)
[6] def builder(data):
        for n in li:
            data[n] = data.close.rolling(window=n).mean().shift()
            return data
[7] test = builder(data)
[8] test.head()
[8]     close   2
    0   126.70  NaN
    1   127.30  NaN
    2   127.38  127.00
    3   128.44  127.34
    4   128.77  127.91

为什么我的函数不返回所有移动平均值(2到100)?

选中“返回数据”行。不应在for循环中。

检查行“返回数据”。不应在for循环中。

您有缩进问题,因为您的
返回值
在循环中,并且函数在第一次迭代后返回。将其更改为:

def builder(data):
    for n in li:
        data[n] = data.close.rolling(window=n).mean().shift()
    return data

您有一个缩进问题,因为您的
return
在循环中,并且函数在第一次迭代后返回。将其更改为:

def builder(data):
    for n in li:
        data[n] = data.close.rolling(window=n).mean().shift()
    return data

谢谢,这就是问题所在!谢谢,这就是问题所在!