2016-07-18 1 views
2

を計算:パンダは、私は時間がデータセットに関連するフロートであるデータフレームを持っている時間ごとの平均

Time   Value 
-47.88333   90 
-46.883333  23 
-45.900000  66 
-45.883333  87 
-45.383333  43 

時間の欄には、私がやりたい何-48から0までの範囲の平均値を計算しています-47.5から-.5まで30分間隔で。 例:

-47.5は、-48と-47の間のすべての値の平均であり、-46.5は、-47と-46の間のすべての値の平均となります。価値がない場合、私は前の平均を引き継ぎたいと思います。時間列がdatetimeオブジェクトではありませんので、この必要性は、カスタム関数であることをでしょう

Time   Value 
-47.5    90 
-46.5    23 
-45.5    65.33 
-44.5    65.33 
-43.5    65.33 

:次のようになり、出力に結果の

+0

その時の値が何を表すのでしょうか? -46.5 =ある時点の46分30分前? –

+0

これは正しい – GNMO11

答えて

3

あなたはかなり簡単にGROUPBYでこれを行うことができます。

(df.groupby(df.Time.apply(lambda x: np.floor(x) + 0.5)) 
    .mean() 
    .Value 
    .reindex(np.arange(-47.5, -42.5)) 
    .ffill()) 

Time 
-47.5 90.000000 
-46.5 23.000000 
-45.5 65.333333 
-44.5 65.333333 
-43.5 65.333333 
Name: Value, dtype: float64 
2

pd.cutとの時間変数をビニングしてみてください。

#change the bins arg to modify the size of the bins 
df.loc[:, 'TimeBin'] = pd.cut(df.Time, bins=[i for i in range (-48, 0)]) 
#groupby the time bin and take the mean: 
df[['TimeBin', 'Value']].groupby('TimeBin').mean() 
関連する問題