簡體   English   中英

如何在 Pandas 中 select '本月的最后一個工作日'?

[英]How can I select 'last business day of the month' in Pandas?

我正在嘗試在本月的最后一個條件下對 DataFrame 進行子集化。 我用了:

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

這行得通,但我正在處理股市數據,所以我錯過了所有實際月底在周末的情況,我需要一種方法來 select “本月的最后一個工作日”。

您可以通過傳遞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

然后,您可以使用此時間序列對DataFrame進行子集/重新索引。

pd。除了生成系列之外,您還可以從日期時間索引中解析業務月末,如下所示:

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

雖然注意到這當前會引發無害的警告 - 請參閱http://pandas.pydata.org/pandas-docs/stable/timeseries.html#using-offsets-with-series-datetimeindex

這是從您的 DataFrame object 中過濾每個月的最后一個工作日,因為索引是日期時間類型。
df.resample('BM').mean()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM