Python 如何选择熊猫中的“本月最后一个工作日”?
我试图在这个月的最后一个条件下对数据帧进行子集。我用过:Python 如何选择熊猫中的“本月最后一个工作日”?,python,pandas,datetime,dataframe,time-series,Python,Pandas,Datetime,Dataframe,Time Series,我试图在这个月的最后一个条件下对数据帧进行子集。我用过: df['Month_End'] = df.index.is_month_end sample = df[df['Month_End'] == 1] 这是可行的,但我正在处理股票市场数据,因此我错过了所有实际月末在周末的实例,我需要一种方法来选择当月的最后一个工作日。您可以通过传入freq='BM'生成一个包含每月最后一个工作日的 例如,创建2014年最后一个营业日系列: >>> pd.date_range('1/1/2
df['Month_End'] = df.index.is_month_end
sample = df[df['Month_End'] == 1]
这是可行的,但我正在处理股票市场数据,因此我错过了所有实际月末在周末的实例,我需要一种方法来选择当月的最后一个工作日。您可以通过传入freq='BM'生成一个包含每月最后一个工作日的
例如,创建2014年最后一个营业日系列:
>>> pd.date_range('1/1/2014', periods=12, freq='BM')
[2014-01-31 00:00:00, ..., 2014-12-31 00:00:00]
Length: 12, Freq: BM, Timezone: None
然后,您可以使用此timeseries对数据帧进行子集划分/重新编制索引。pd。您也可以从日期时间索引中解析业务月底,而不是生成序列,如下所示:
df['BMonthEnd'] = (df.index + pd.offsets.BMonthEnd(1)).day
尽管请注意,这目前会引发一个无害的警告-请参阅此解决方案有效。唯一的问题是,在某些系列中,一个月的最后一个工作日可能是“定制假日”,因此您需要将其纳入等式中。我在这个问题中使用的是公认的答案:但是否有更好的方法来细分/重新编制索引?hernanavella的评论至关重要。在Python中,我们如何处理这个简单的问题?我们只想简单明了地实现这个简单的问题:一个月的最后一个股票交易日。请注意,这个方法并不完美。如果d日是当月的最后一个工作日,则d+B月1为下个月的最后一个工作日。