如何选择Pandas的“每月最后一个工作日”?

2024-05-29 05:44:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在月底的条件下对数据帧进行子集。我用过:

df['Month_End'] = df.index.is_month_end
sample = df[df['Month_End'] == 1]

这很有效,但我正在处理股市数据,所以我错过了所有实际月底在周末的情况,我需要一种方法来选择“每月最后一个工作日”。


Tags: 数据sample方法dfindexis情况条件
2条回答

您可以通过传入freq='BM',生成每月最后一个工作日的time series

例如,要创建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

然后,可以使用此时间序列对数据帧进行子集/重新索引。

除了生成序列,您还可以从datetime索引中解析业务月底,如下所示:

df['BMonthEnd'] = (df.index + pd.offsets.BMonthEnd(1)).day

不过请注意,这目前会引发一个无害的警告-请参见http://pandas.pydata.org/pandas-docs/stable/timeseries.html#using-offsets-with-series-datetimeindex

相关问题 更多 >

    热门问题