因此,基本上,我只需要有关如何计算数据帧每一行的24个月滚动平均值的建议。每行表示一个特定的城市,列是该月的相应销售额。如果有人可以帮助我解决这个问题,将不胜感激
编辑:显然,我未能正确解释自己。我知道pandas内置了滚动方法。问题是我不想采用单数列的移动平均值,而是希望采用连续的列数。
样本数据集
状态-M1-M2-M3-M4-.....-M48
UT-40-20-30-60 -..... 60
CA-30-60-20-40 -..... 70
所以我想找到最近24个月每个州的滚动平均值(M24-M48列)
我尝试过的事情:
Data['24_Month_Moving_Average'] = Data.rolling(window=24, win_type='triang', min_periods=1, axis=1).mean()
错误:传递的项目数错误139,放置位置表示1
编辑2,样本数据集:
Data = pd.Dataframe({'M1':[1, 2], 'M2':[3,5], 'M3':[5,6]}, index = ['UT', 'CA'])
# need code that will add column that is the rolling 24 month average for each state
答案 0 :(得分:0)
您可以将功能rolling()
与mean()
一起使用,并按如下所示指定所需的参数window, min_periods
:
df.col1.rolling(n, win_type='triang', min_periods=1).mean()
不知道应该得到什么结果,但是列出一个示例以显示每一行的apply()会产生滚动,使state
列成为数据帧的索引,希望对您有所帮助:< / p>
import pandas as pd
df = pd.DataFrame({'B': [6, 1, 2, 20, 4],'C': [1, 1, 2, 30, 4],'D': [10, 1, 2, 5, 4]})
def test_roll(data):
return(data.rolling(window=2, win_type='triang', min_periods=1, axis=0).mean())
print(df.apply(test_roll, axis=1))