2016-07-06 7 views
1

私は時系列解析に取り組んでいます少なくとも2つのインデックス変数(この場合はIDとYear)を含むデータセットがあります。 IDと年でソート後:マルチレベルグループのグループ内の観測値へのグループ順序のカウント/アサイン

ID Year Grade 
1 1990 B 
1 1991 B 
1 1991 A 
2 2001 B 
2 2001 C 
2 2001 C 
2 2003 A 

Iは、これらの変数によってグループしたいと各観察第1のグループ内の第2レベルのグループの出現の順序を割り当てます。言い換えれば、私は以下の期間変数を生成したいと考えています:

ID Year Grade period 
1 1990 B  1 
1 1991 B  2 
1 1991 A  2 
2 2001 B  1 
2 2001 C  1 
2 2001 C  1 
2 2003 A  2 
+0

質問の一部として回答を追加する必要があります。 – Merlin

答えて

2

これについては、私はラウンドを見つけました。最初のソートあなたのレベル変数

full_data = full_data.sort_values(by=['ID','Year'],ascending = [True, True]) 

は、各第一レベルのグループ内のその変数の累積和を計算し、各2レベルのグループ

full_data['temp'] = (full_data.groupby(['ID','Year']).cumcount() == 0).astype(int) 

の最初の観察を示す2値変数を作成します。

full_data['period'] = full_data.groupby(['ID']).cumsum()['temp'] 

最初にソートしないと、この回答は機能しません。パンダとはかなり経験が不足しているので、これを理解するまでにはしばらく時間がかかりました。それは動作しますが、誰かがもっと簡単な解決策を持っているのであれば私は不思議です。

関連する問題