複数のインデックスを持つデータフレームがあり、いくつかのデータのローリング合計を作成したいと考えていますが、インデックス内の各 ID に対してです。
たとえば、2 つのインデックス ( FirmとYear ) があり、zdataという名前のデータがあるとします。作業例は次のとおりです。
import pandas as pd
# generating data
firms = ['firm1']*5+['firm2']*5
years = [2000+i for i in range(5)]*2
zdata = [1 for i in range(10)]
# Creating the dataframe
mydf = pd.DataFrame({'firms':firms,'year':years,'zdata':zdata})
# Setting the two indexes
mydf.set_index(['firms','year'],inplace=True)
print(mydf)
zdata
firms year
firm1 2000 1
2001 1
2002 1
2003 1
2004 1
firm2 2000 1
2001 1
2002 1
2003 1
2004 1
そして今、会社ごとに最初から始まるローリング サムを取得したいと思います。ただし、入力すると
new_rolling_df=mydf.rolling(window=2).sum()
print(new_rolling_df)
zdata
firms year
firm1 2000 NaN
2001 2.0
2002 2.0
2003 2.0
2004 2.0
firm2 2000 2.0
2001 2.0
2002 2.0
2003 2.0
2004 2.0
複数のインデックスは考慮されず、通常のローリングサムが作成されます。誰もが私がどのようにすべきかを知っています (特に、2 つよりも多くのインデックス (会社、労働者、国、年) があるため)
ありがとう、
エイドリアン