2017-10-27 5 views
2

データフレーム行にローリングウィンドウ(2ピリオド)を作成し、値の合計を計算する方法はありますか?データフレーム行のローリングウィンドウPython 3

マイデータ:出力が所望の

ID Name Value1 Value2 Value3 Value4 
0 A  2  2  4  4 
1 B  1  1  3  3 

ID Name Value1 Value2 Value3 Value4 Rol1 Rol2 Rol3 
0 A  2  2  4  4  4 6 8 
1 B  1  1  3  3  2 4 6 

私はdf.rolling()を使用しようとしただけで、特定の列の上にそれを使用することができました

答えて

2

あなたにrollingを使用できますが、最初に機能で使用できないすべての列のset_indexを追加します。最後にdropnaを削除してください。NaN s co lumns:

df1 = (df.set_index(['ID','Name']) 
     .rolling(2, axis=1).sum() 
     .dropna(axis=1, how='all')) 
#rename columns 
df1.columns = ['Roll{}'.format(x) for x in range(1, len(df1.columns)+1)] 
print (df1) 
     Roll1 Roll2 Roll3 
ID Name      
0 A  4.0 6.0 8.0 
1 B  2.0 4.0 6.0 

最終join出力元へ:それは完全に働いた

df = df.join(df1, on=['ID','Name']) 
print (df) 
    ID Name Value1 Value2 Value3 Value4 Roll1 Roll2 Roll3 
0 0 A  2  2  4  4 4.0 6.0 8.0 
1 1 B  1  1  3  3 2.0 4.0 6.0 
+0

、どうもありがとう! – Batmax

関連する問題