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”的列。