我试图在这个月的最后一个条件下对DataFrame进行子集化。我使用了:
df['Month_End'] = df.index.is_month_end sample = df[df['Month_End'] == 1]
字符串这是可行的,但我正在处理股票市场数据,所以我错过了所有实际月底是在周末的示例,我需要一种方法来选择“本月的最后一个工作日”。
ghg1uchk1#
通过传入freq='BM',您可以生成一个包含每月最后一个工作日的time series。例如,要创建一系列2014年的最后一个工作日:
freq='BM'
>>> 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进行子集化/重新索引。
xyhw6mcr2#
除了生成系列之外,您还可以从datetime索引中解析业务月末,如下所示:
df['BMonthEnd'] = (df.index + pd.offsets.BMonthEnd(1)).day
字符串不过请注意,这目前会抛出一个无害的警告-请参阅http://pandas.pydata.org/pandas-docs/stable/timeseries.html#using-offsets-with-series-datetimeindex注意:如果day(d)已经是当月的最后一个工作日,那么d + pd.offsets.BMonthEnd(1)将给予下一个月的最后一个工作日。如果这是不需要的,请使用pd.offsets.BMonthEnd(0):
d
d + pd.offsets.BMonthEnd(1)
pd.offsets.BMonthEnd(0)
df['BMonthEnd'] = (df.index + pd.offsets.BMonthEnd(0)).day
型
**编辑:**要按照OP的要求实际过滤df:
df = df[(df.index + pd.offsets.BMonthEnd(0)).day == df.index.day]
bksxznpy3#
这是为了从DataFrame对象中筛选每个月的最后一个工作日,假定索引是datetime类型。第一个月
3条答案
按热度按时间ghg1uchk1#
通过传入
freq='BM'
,您可以生成一个包含每月最后一个工作日的time series。例如,要创建一系列2014年的最后一个工作日:
字符串
然后,您可以使用这个时间序列对DataFrame进行子集化/重新索引。
xyhw6mcr2#
除了生成系列之外,您还可以从datetime索引中解析业务月末,如下所示:
字符串
不过请注意,这目前会抛出一个无害的警告-请参阅http://pandas.pydata.org/pandas-docs/stable/timeseries.html#using-offsets-with-series-datetimeindex
注意:如果day(
d
)已经是当月的最后一个工作日,那么d + pd.offsets.BMonthEnd(1)
将给予下一个月的最后一个工作日。如果这是不需要的,请使用pd.offsets.BMonthEnd(0)
:型
**编辑:**要按照OP的要求实际过滤df:
型
bksxznpy3#
这是为了从DataFrame对象中筛选每个月的最后一个工作日,假定索引是datetime类型。
第一个月