python - 对 pandas 数据框进行迭代和平均

标签 python pandas

我有一个包含很多行的数据库,例如:

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

enter image description here

关于python - 对 pandas 数据框进行迭代和平均,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39049202/

相关文章:

python - Pandas 映射 2 dfs

python - 在 Python pandas 中读取 `read_excel` 的空单元格

python - 如何有效地获取唯一值的索引列表?

python - 代码段无法在 ST3 中静默插入

python - 当你同时拥有 str 和 unicode 时,让类充当 Python 中的字符串

python - 句子分词器 - spaCy 到 pandas

python - 如何有效地将 pandas 数据帧转换为图像数组?

python - 为什么我收到 Typeerror : 'int' object not iterable

python - 子类化时不可散列的类型 `int`

python - 将 UnivariateSpline 与 SCIPY 结合使用