在数据框

时间:2017-10-03 23:31:29

标签: python pandas datetime masking

我有一个包含每日数据的数据框,超过3年。 我想构建另一个包含每个月最后5天数据的数据框。 ' date'的行。在这种情况下,列(对于新构造的数据帧):

2013年1月27日
2013年1月28日
2013年1月29日
二零一三年一月三十零日
2013年1月31日
2013年2月23日
2013年2月25日
2013年2月26日
2013年2月27日
2013-02-28

有人可以告诉我如何管理它吗?

非常感谢!

2 个答案:

答案 0 :(得分:2)

执行此操作的一种方法是使用布尔索引来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

答案 1 :(得分:0)

假设您的列名为Date

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