我有一个包含很多行的数据库,例如:
timestamp name price profit
bob 5 4
jim 3 2
jim 2 6
bob 6 7
jim 4 1
jim 6 3
bob 3 1
数据库按时间戳排序。我希望能够添加一个新列,它将在当前值之前获取价格列中的最后 2 个值,并将它们平均到一个新列中。这样前三行看起来就像这样,带有一个新列:
timestamp name price profit new column
bob 5 4 4.5
jim 3 2 3
jim 2 6 5
(6+3)/2 = 4.5
(2+4)/2 = 3
(4+6)/2 = 5
这不是为了学校项目或任何事情,这只是我自己正在做的事情。我试过问类似的问题,但我认为我不是很清楚。提前致谢!
最佳答案
def shift_n_roll(df):
return df.shift(-1).rolling(2).mean().shift(-1)
df['new column'] = df.groupby('name').price.apply(shift_n_roll)
df
关于python - 对 pandas 数据框进行迭代和平均,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39049202/