2016-11-03 44 views
2

我有一個df,其中可以用下面的日期列和4個變量列表示。按datetimeindex過濾數據幀 - 每個月的最後一個營業日

Date   A B C D 
2015-10-31 6 7 3 7 
2015-11-01 1 3 9 4 
2015-11-02 4 5 8 1 
2015-11-03 4 2 5 9 

我期待通過添加名爲「EndofMonth」一個附加列,並從每月服用後第n行過濾在每個月的最後一個營業日的DF:

df['EndOfMonth'] = pd.to_datetime(df['DATE'], format="%Y%m") + MonthEnd(1) 
df.apply(lambda x: x.sort('dt', ascending=True).tail(1)) 

這是給我一個錯誤。任何想法如何更好地解決這個問題?

+1

'MonthEnd(1)'是什麼? –

回答

2

IIUC

df.resample('M', on='Date').apply(pd.DataFrame.tail, n=2) 

enter image description here


迴應置評

d1 = df.resample('M').apply(pd.DataFrame.tail, n=2) 
d1.index = d1.index.droplevel(0) 
d1 

enter image description here

+0

我得到這個TypeError錯誤:resample()得到了一個意想不到的關鍵字參數'on'。也許是因爲它正在閱讀我的數據列。不是作爲一個日期時間? @piRSquared – spacedinosaur10

+1

'on'是pandas 0.19中'resample'的新參數。你可以做'df.set_index('Date')。resample('M')。apply(pd.DataFrame.tail,n = 2)' – piRSquared

+0

@ piRSquared-我很抱歉持續的問題,但是 - - 索引(2日期)。理想情況下,我希望擺脫索引列之一。我怎樣才能做到這一點?我知道如何刪除一列(df.drop),但我不知道如何刪除索引。 – spacedinosaur10