2016-10-06 6 views
2

以下の列と値を持つcsvデータセットが与えられます(例)。 私は私のcsvデータにの新しい列を追加する各idに従って移動平均のidを移動します。 S1が私の測定値です。時間枠は3でなければなりません。私のデータセットは現在どのように見えますか?Pythonで定義された間隔でID /グループ別移動平均

id S1 
1 3 
1 4 
1 2 
1 6 
1 9 
2 3 
2 1 
2 2 
2 3 
2 8 
2 6 
3 1 
3 4 
3 2 
3 8 
3 5 

そして、それは私がしますしたいものです。

id S1 movA 
1 3 NaN 
1 4 NaN 
1 2 3.000 
1 6 4.000 
1 9 5.667 
2 3 NaN 
2 1 NaN 
2 2 2.000 
2 3 2.000 
2 8 4.333 
2 6 5.333 
3 1 NaN 
3 4 NaN 
3 2 2.333 
3 8 4.667 
3 5 5.000 
+2

で使用groupbyrollingは、あなたがしようとしている試みからコードを提供することはできますか? – polka

+0

ここでも変数の意味は? S1に沿って変わる?もしそうなら、どんな基準で? – Boud

+0

申し訳ありませんが、間違った言葉かもしれません。私が意味することは、時間枠や時間枠が3か5かどうかは関係ありません。私は、S1からの値の移動平均を持つ列を追加したいだけです。各IDについて。 – matthew

答えて

1

mean

g = df.groupby('id').S1 
rolls = [2, 3, 4, 5] 
pd.concat([g.rolling(i).mean() for i in rolls], axis=1, keys=rolls) 

enter image description here

+0

これは良いアプローチです。ありがとう。しかし、これを私のデータセットに追加の列として追加する方法はわかりません。 #df ['label1'] = np.where(df)は、 .index.isin(idx1)、1,0) – matthew

+0

これは良いアプローチです。ありがとう。しかし、これをデータセットに追加する列として追加する方法がわかりません。 これは別のケースですが、このような色を追加したいと思います: idx1 = df.groupby( 'id')['RUL']。nsmallest(30).reset_index(drop = True、level = 0 ).index df ['label1'] = np.where(df.index.isin(idx1)、1,0) – matthew

+0

質問の最も効果的な部分は、どのデータを扱っているかのサンプルを提供することです* **と***はあなたが出力として期待するもののサンプルです。あなたが実際に望んでいるか、必要としているものは混乱しています。私はそれが役に立つと思ったので、私はこの答えを提供しました。あなたが戻って達成しようとしていることをより明確にすることができれば、より効果的にあなたを助けることができます。つまり、質問ですでに提供しているサンプルから結果がどのように見えるかをまとめておく時間です。 – piRSquared

関連する問題