我有一个包含每日数据的数据框,超过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
有人可以告诉我如何管理它吗?
非常感谢!
答案 0 :(得分:2)
执行此操作的一种方法是使用布尔索引来dt.day
和dt.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')