2016-07-14 1 views
3

DataFrameのオブジェクトは、datetimeでインデックスされています。私たちは私のオブジェクトは、次のようになりましょう:データフレーム列の平均を終日まで(datetime-indexed)

DateTime    A 
2016-07-01 08:30:00 5 
2016-07-01 09:28:17 6 
2016-07-01 14:09:11 9 
2016-07-01 22:33:44 10 
2016-07-02 08:30:00 20 
2016-07-02 15:00:00 30 

私は一日の終わりまで、タイムスタンプを持つデータポイント(行)から算出し、カラムAの平均値を持つ新しい列を作りたいです。この例では、結果のデータフレームのオブジェクトは、次のようになります。

DateTime    A B 
2016-07-01 08:30:00 5 7.5 
2016-07-01 09:28:17 6 8.33333 
2016-07-01 14:09:11 9 9.5 
2016-07-01 22:33:44 10 10 
2016-07-02 08:30:00 20 25 
2016-07-02 15:00:00 30 30 

私は(df['A'].loc[df['DateTime']:df['end_of_day']].mean())時間でデータをスライス、一日の終わりを取得するために別の列を作るために考えられてきたが、私はあなたのことを発見しました一連のデータに基づいてデータを可変スライスすることはできません。誰もこれを行うための効率的な方法がありますか?

ありがとうございます!

答えて

1

def nowTilEODMean(d): 
    cond1 = df.index >= d.name 
    cond2 = df.index.day == d.name.day 
    return df.A.loc[cond1 & cond2].mean() 

df['B'] = df.apply(nowTilEODMean, axis=1) 
df 

enter image description here

applyにカスタム関数を作成します。
関連する問題