如何选择该月的最后一个工作日'在熊猫?

时间:2014-11-30 21:39:18

标签: python pandas datetime dataframe time-series

我正在尝试在一个月的最后一个条件下对DataFrame进行子集化。我用过:

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

这有效,但我正在处理股票市场数据,因此我错过了本月末实际结束的所有实例,我需要一种方法来选择“当月的最后一个工作日” ”

2 个答案:

答案 0 :(得分:8)

您可以通过传递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

然后,您可以使用此时间序列对您的DataFrame进行子集/重新索引。

答案 1 :(得分:0)

pd。除了生成系列之外,您还可以从日期时间索引中解析业务月末,如下所示:

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

虽然注意到这会引发无害的警告 - 请参阅http://pandas.pydata.org/pandas-docs/stable/timeseries.html#using-offsets-with-series-datetimeindex