Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何选择熊猫中的“本月最后一个工作日”?_Python_Pandas_Datetime_Dataframe_Time Series - Fatal编程技术网

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为下个月的最后一个工作日。