python – 在特定列上的pandas上滚动平均值

python – 在特定列上的pandas上滚动平均值,第1张

概述我有一个这样的数据框,从CSV导入. stock popDate2016-01-04 325.316 822016-01-11 320.036 832016-01-18 299.169 792016-01-25 296.579 842016-02-01 295.334 822016-02-08 309.777 812016-02-15 317 我有一个这样的数据框,从CSV导入.

stock  popDate2016-01-04  325.316   822016-01-11  320.036   832016-01-18  299.169   792016-01-25  296.579   842016-02-01  295.334   822016-02-08  309.777   812016-02-15  317.397   752016-02-22  328.005   802016-02-29  315.504   812016-03-07  328.802   812016-03-14  339.559   862016-03-21  352.160   822016-03-28  348.773   842016-04-04  346.482   832016-04-11  346.980   802016-04-18  357.140   752016-04-25  357.439   772016-05-02  356.443   782016-05-09  365.158   782016-05-16  352.160   722016-05-23  344.540   742016-05-30  354.998   812016-06-06  347.428   772016-06-13  341.053   782016-06-20  363.515   802016-06-27  349.669   802016-07-04  371.583   822016-07-11  358.335   812016-07-18  362.021   792016-07-25  368.844   77...             ...  ...

我想添加一个新的MA列,用于计算列pop的滚动平均值.我尝试了以下内容

df['MA']=data.rolling(5,on='pop').mean()

我收到一个错误

ValueError: Wrong number of items passed 2,placement implIEs 1

所以我想让我试试,如果它只是工作而不添加一列.我用了

data.rolling(5,on='pop').mean()

我得到了输出

stock  popDate2016-01-04       NaN   822016-01-11       NaN   832016-01-18       NaN   792016-01-25       NaN   842016-02-01  307.2868   822016-02-08  304.1790   812016-02-15  303.6512   752016-02-22  309.4184   802016-02-29  313.2034   812016-03-07  319.8970   812016-03-14  325.8534   862016-03-21  332.8060   822016-03-28  336.9596   842016-04-04  343.1552   832016-04-11  346.7908   802016-04-18  350.3070   752016-04-25  351.3628   772016-05-02  352.8968   782016-05-09  356.6320   782016-05-16  357.6680   722016-05-23  355.1480   742016-05-30  354.6598   812016-06-06  352.8568   772016-06-13  348.0358   782016-06-20  350.3068   802016-06-27  351.3326   802016-07-04  354.6496   822016-07-11  356.8310   812016-07-18  361.0246   792016-07-25  362.0904   77...              ...  ...

我似乎无法在列pop上应用Rolling mean.我究竟做错了什么?

解决方法 要分配列,您可以根据SerIEs创建滚动对象:

df['new_col'] = data['column'].rolling(5).mean()

ac2001发布的答案并不是最有效的方法.他正在计算数据框中每一列的滚动平均值,然后他使用“pop”列分配“ma”列.以下第一种方法更有效:

%timeit df['ma'] = data['pop'].rolling(5).mean()%timeit df['ma_2'] = data.rolling(5).mean()['pop']1000 loops,best of 3: 497 µs per loop100 loops,best of 3: 2.6 ms per loop

除非您需要在所有其他列上存储计算滚动方法,否则我不建议使用第二种方法.

总结

以上是内存溢出为你收集整理的python – 在特定列上的pandas上滚动平均值全部内容,希望文章能够帮你解决python – 在特定列上的pandas上滚动平均值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1191008.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存