2016-11-03 7 views
2

私は以下のように日付列と4つの可変列で表現することができるdfを持っています。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

What's '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'はパンダ0.19の' resample'の新しいパラメータです。 (pd.DataFrame.tail、n = 2) ' – piRSquared

+0

@ piRSquared-継続的な質問をおかけして申し訳ありませんが、これは複数作成されました。 -index(2つの日付)。理想的には、インデックスの列の1つを取り除きたいのです。これどうやってするの?私は列(df.drop)を削除する方法を知っているが、私はインデックスを削除する方法がわからない。 – spacedinosaur10

関連する問題