我有一个带有数字的数据框列。我需要在数据框中添加一个新列,其中新列的值是当前值与该列的下两个值之和。新列的最后两行应为NAN。 例如:如果我的专栏是
p=[1,2,3,4,5,6,7,8]
df=pd.DataFrame({'num':p})
#dummy data
新列的第一个值应该是1 + 2 + 3,第二个值2 + 3 + 4,依此类推。 现在,我将列转换为列表,然后进行计算。
p=df['num'].tolist()
ls=[]
for (i,v) in enumerate(p):
try:
val=v+p[i+1]+p[i+2]
ls.append(val)
except:
ls.append(np.NAN)
最后将列表添加到数据框
df['rolled']=ls
熊猫有没有办法做到这一点?我尝试过滚动平均值,但无法按我的方式工作,滚动平均值中是否有任何特殊窗口可以按要求的格式输出?
预先感谢
答案 0 :(得分:1)
df = df[::-1]
df['num3'] = df.rolling(3).sum()
df[::-1]