2016-07-14 43 views
3

我有一個DataFrame對象,該對象的索引編號爲datetime。讓我們說,我的目標是這樣的:僅查找數據幀列的平均值直到日期結束(日期時間索引)

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 

我想要有一欄只從具有時間戳,直到一天結束的數據點(行)計算出的平均值的新列。在這個例子中,所產生的數據幀的對象應該是這樣的:

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
相關問題