思路是,获取指数的行情信息,然后利用如下代码进行判断:
data['first'] = data['trade_date'].where(data['month'] != data.shift(1)['month'], np.nan)
data['last'] = data['trade_date'].where(data['month'] != data.shift(-1)['month'], np.nan)
完整代码如下:
数据源我用的是wind,大家可以用tushare来替代,获取更简单一些。
w.start()
w.isconnected()
first = list()
last = list()
for y in range(2009, 2022):
data = createcleandata_fortimeseries(w.wses("a001010200000000", "sec_close_avg", f"{str(y)}-01-01", f"{str(y+1)}-01-01", ""))
data = data.Data
data.index = pd.to_datetime(data.index)
data['trade_date'] = data.index
data['month'] = data.index.month
data['first'] = data['trade_date'].where(data['month'] != data.shift(1)['month'], np.nan)
data['last'] = data['trade_date'].where(data['month'] != data.shift(-1)['month'], np.nan)
first += list(data['first'].dropna())
last += list(data['last'].dropna())