2017-10-03 4 views
0

私は3年以上にわたって毎日のデータを持つデータフレームを持っています。 私は毎月最後の5日間のデータを含む別のデータフレームを構築したいと思います。 「日付」列の行は、(新しい構築データフレームのために)この場合、次のようになりますデータフレーム内の各月の特定の日のデータを選択してください

2013年1月27日2013年1月28日

2013年1月29日
2013から01 -30
2013年1月31日2013年2月23日

2013年2月25日2013年2月26日

2013年2月27日2013年2月28日

誰かがそれをどのように管理できるか教えてもらえますか?

多くの感謝!これを行うには

答えて

2

一つの方法は、boolean型のインデックスでdt.daydt.days_in_monthにある:

df = pd.DataFrame({'Date':pd.date_range('2010-01-01','2013-12-31',freq='D'), 
        'Value':np.random.rand(1461)}) 

df_out = df[df['Date'].dt.day > df['Date'].dt.days_in_month-5] 

print(df_out.head(20)) 

出力:

  Date  Value 
26 2010-01-27 0.097695 
27 2010-01-28 0.236572 
28 2010-01-29 0.910922 
29 2010-01-30 0.777657 
30 2010-01-31 0.943031 
54 2010-02-24 0.217144 
55 2010-02-25 0.970090 
56 2010-02-26 0.658967 
57 2010-02-27 0.189376 
58 2010-02-28 0.229299 
85 2010-03-27 0.986992 
86 2010-03-28 0.980633 
87 2010-03-29 0.258102 
88 2010-03-30 0.827310 
89 2010-03-31 0.813219 
115 2010-04-26 0.135519 
116 2010-04-27 0.263941 
117 2010-04-28 0.120624 
118 2010-04-29 0.993652 
119 2010-04-30 0.901466 
0

あなたの列がDate命名されると仮定すると。

df.groupby([df.Date.dt.month,df.Date.dt.year]).apply(lambda x: x[-5:]).reset_index(drop=True).sort_values('Date') 
関連する問題