Python 引用自身的列

Python 引用自身的列,python,python-2.7,python-3.x,pandas,Python,Python 2.7,Python 3.x,Pandas,我有一个数据框,看起来像: 我想添加一列df['Ave'],它将某个常数或函数乘以df['Ave'].shift(1)。最优雅的方式是什么 当我尝试这样做时,我得到一个键错误。我还考虑过设置df['Ave'].head(1)=df['Close'],然后从数据帧的第二行启动该函数,但我不确定如何做到这一点 提前谢谢 这就是你可以实现它的方法 import pandas as pd df = pd.DataFrame({"col": range(1,5)}) df 输出: col 0

我有一个数据框,看起来像:

我想添加一列
df['Ave']
,它将某个常数或函数乘以
df['Ave'].shift(1)
。最优雅的方式是什么

当我尝试这样做时,我得到一个键错误。我还考虑过设置df['Ave'].head(1)=df['Close'],然后从数据帧的第二行启动该函数,但我不确定如何做到这一点


提前谢谢

这就是你可以实现它的方法

import pandas as pd
df = pd.DataFrame({"col": range(1,5)})
df
输出:

    col
0   1
1   2
2   3
3   4
col
0   4.0
1   6.0
2   8.0
3   NaN
要更新列,使行[0]具有2*行[1]值,我们使用以下代码

df['col'] = 2 * df['col'].shift(-1)
df
输出:

    col
0   1
1   2
2   3
3   4
col
0   4.0
1   6.0
2   8.0
3   NaN

您还可以执行
df['col']=2*df['col']。shift(1)
将行[1]数据替换为2*row[0]值,依此类推。

因此您的平均值如下:

avg = df.mean(axis=1)
如果需要某种常量,很容易:

df['Avg'] =  avg.shift(1) * constant
如果需要函数,可能需要执行以下操作:

df['Avg'] = avg.shift(1).apply(f)
然后您可以手动设置第一行:

df.Avg.iloc[0] = df.Close.iloc[0]

我在您的数据框中没有看到任何名为“Ave”的列。