2
私は複数のインデックスを持つデータフレームを持っていますが、いくつかのデータのローリングサムを作成したいのですが、インデックスの各IDに対して作成します。パンダ:複数のインデックス(パネルデータ)のローリングサム
たとえば、私たちは、私は2つのインデックス(事務所と年)を持っていると私は名前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(事務所、労働者、国、年よりもさらにインデックス)
感謝を持っている、特に以来(
エイドリアン
はありがとうございました!私は大きなデータフレームをアンスタックするにはあまりにも多くのメモリを必要とするため、2番目のソリューションを使用します。クイックコメント、あなたは "レベル= 0"を説明できますか?数字0は何を参照していますか?特に私はさらに多くのインデックスでこれを複製したいからです。 –
レベルゼロはインデックスの最初のレベルです。索引でグループ化する場合は、レベルが1つしかない場合でもレベルを指定する必要があります。そして、インデックスレベルでグループ化したいということをgroupbyに伝える唯一の方法です。 – piRSquared
@ piRSquared-この情報をありがとう、これを動作させることに多くの問題があった。私にとって(私は思うが)それを固定したのはgroup_keysだった。これが何をしているのか説明できますか?これがなければ私はNaNのコラムを持っていました。ありがとうございました! –