数据框行的Python滚动均值

时间:2019-04-29 22:42:00

标签: python pandas dataframe rolling-computation

因此,基本上,我只需要有关如何计算数据帧每一行的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

Picture of Dataframe

1 个答案:

答案 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))

pandas.DataFrame.rolling