2017-10-31 11 views
1

に対応する列にグループIDとしてインデックス付き/ピボットをGROUPBYの必要性私はこのようになりますテーブルがあります。パンダタイムスパンとグループ:直近の期間値

Index Group_Id Period Start Period End Value Value_Count 
    42 1016833 2012-01-01 2013-01-01  127491.00  17.0 
    43 1016833 2013-01-01 2014-01-01  48289.00  9.0 
    44 1016833 2014-01-01 2015-01-01  2048.00  2.0 
    45 1016926 2012-02-01 2013-02-01  913.00  1.0 
    46 1016926 2013-02-01 2014-02-01  6084.00  5.0 
    47 1016926 2014-02-01 2015-02-01  29942.00  3.0 
    48 1016971 2014-03-01 2015-03-01  0.00   0.0 

を私がで終わるしようとしています各Group_Idが1つの観測値を有し、値/値カウントが、それぞれの期間に対応する列に変換される「ワイド」df。だから、最終的な結果のような希望:

Value_P0は最新の値である
Index Group_Id Value_P0 Value_P1 Value_P3 Count_P0 Count_P1 ... 
    42 1016833 2048.00  48289.00 127491.00  2.0   9.0 
    45 1016926 29942.00  6084.00 913.00  3.0   5.0 
    48 1016971 0.0   0.00  0.0   0.0   0.0 

を、Value_P1はその次の最も最近の値であり、かつカウント列は、同じように動作します。

Group_IDがインデックスで、Period Startが列で、ValuesまたはCountsが対応する値になるようにテーブルをピボットしようとしました。

Period Start 2006-07-01 2008-07-01 2009-02-01 2009-12-17 2010-02-01 2010-06-01 2010-07-01 2010-08-13 2010-09-01 2010-12-01 ... 2016-10-02 2016-10-20 2016-12-29 2017-01-05 2017-02-01 2017-03-28 2017-04-10 2017-05-14 2017-08-27 2017-09-15 
Group_Id                      
1007310 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
1007318 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
1007353 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ... 

私は1つのレコードとしてGroup_Idsを持っているが、その後多くの列の各行をループする必要があると非NaN値を引き出してしまうこの方法です。それらの順序は、最も古いものから最も新しいものに対応する。これは間違ったやり方だと思われます。

また、Group_Idでグループ化し、最近の日付に対応するTimeleltaを作成することも考えました。次に、このピボット/アンスタッキングから、列がtimedeltaで、値がvalueまたはvalue_countになるようにします。私はこれをどうやって行うのか分からない。私は助けに感謝します。

答えて

0

はまだこれが働いpivot

df['ID']=df.groupby('Group_Id').cumcount() 
d1=df.pivot('Group_Id','ID','Value').add_prefix('Value_P') 
d2=df.pivot('Group_Id','ID','Value_Count').add_prefix('Count_P') 
pd.concat([d1,d2],axis=1).fillna(0) 

Out[347]: 
ID  Value_P0 Value_P1 Value_P2 Count_P0 Count_P1 Count_P2 
Group_Id                
1016833 127491.0 48289.0 2048.0  17.0  9.0  2.0 
1016926  913.0 6084.0 29942.0  1.0  5.0  3.0 
1016971  0.0  0.0  0.0  0.0  0.0  0.0 
+0

を使用します。ありがとう! –

+0

@lucky_but_stupid Yw〜BTW、それを受け入れることはできますか? – Wen

関連する問題