【问题标题】:Calculate mean from previous N rows in the column [duplicate]从列中的前 N ​​行计算平均值 [重复]
【发布时间】:2021-03-30 20:11:44
【问题描述】:

对于下面的数据框df,我想在每行的sales列中找到最后3个值的平均值,将结果命名为新列Mean_lst_3,如下所示,最好的方法是什么这样做?

    STK_ID  RPT_Date  TClose   sales       Mean_lst_3
0   000568  20060331    3.69   5.975       NaN
1   000568  20060630    9.14  10.143       NaN
2   000568  20060930    9.49  13.854       NaN
3   000568  20061231   15.84  19.262       9.99 (= mean([5.975, 10.143, 13.854]))
4   000568  20070331   17.00   6.803       14.42(= mean([10.143, 13.854, 19.262]))
5   000568  20070630   26.31  12.940       13.31(= mean([13.854, 19.262, 6.803]))
6   000568  20070930   39.12  19.977       ...
7   000568  20071231   45.94  29.269       ...
8   000568  20080331   38.75  12.668       ...
9   000568  20080630   30.09  21.102       ...
10  000568  20080930   26.00  30.769       ...

【问题讨论】:

  • 嗨@cs95 我想你可能误解了我的问题,CMIIW,我是根据当前行而不是整个数据框来查找最后 3 个值。
  • 啊,因为U11前锋的回答,我得到了错误的印象。你在找df['sales'].rolling(3).mean().shift()吗?

标签: python pandas


【解决方案1】:

试试tail:

print(df['sales'].tail(3))

【讨论】:

  • 它返回了AttributeError: 'Series' object has no attribute 'tails'。 CMIIW,我正在根据当前行查找最后 3 个值,df.tail() 不是为数据框获取相同的最后 3 行吗?
  • @nilsinelabore 编辑了我的答案
  • 更新了问题,tail 似乎不是他们想要的。
  • @cs95 没错
猜你喜欢
  • 1970-01-01
  • 2015-11-02
  • 1970-01-01
  • 1970-01-01
  • 2019-03-26
  • 1970-01-01
  • 2020-04-06
  • 1970-01-01
  • 2021-11-08
相关资源
最近更新 更多