Фрейм данных df_vol
создается следующим образом
df_vol = df.loc[:, 1].map(fd.retrieve_symbol_datetime).to_frame('maturity')
df_vol['date'] = df_vol.index.date
df_vol.head()
maturity date
2018-11-01 11:31:53.023 2022-04-01 2018-11-01
2018-11-01 16:30:15.287 2022-04-01 2018-11-01
2018-11-01 10:23:06.779 2022-10-01 2018-11-01
2018-11-01 16:30:15.291 2022-10-01 2018-11-01
2018-11-01 11:30:56.251 2018-12-01 2018-11-01
Дальнейшая проверка df_vol
показывает
df_vol.dtypes
maturity category
date object
dtype: object
Я ожидаю, что столбец maturity
имеет датувведите как он заполнен содержимым fd.retrieve_symbol_datetime()
, функция, которая возвращает pandas.datetime()
.Кроме того, столбец date
является типом объекта, хотя он принимает значения из index.date
.
Мне интересно иметь типы datetime
, так как в конечном итоге я хочу сделать разницу
pd.eval("(df_vol.maturity - df_vol.date)")
retrieve_symbol_datetime ()
def retrieve_symbol_datetime(future: str):
"""
Retrieves the maturity date of a future whose format is of the form AAAMYY.
Params
-------
future : string, of form 'AAAMYY'
This format is for futures where 'AAA' is the string that identifies
the symbol, 'M' is the character that identifies the month, and 'YY' is
a two-digit number that identifies the year.
Returns : pandas.datetime
Returns the date of maturiry of the future's symbol.
Example
-------
If future = 'DI1Z20', then it returnts a pandas.datetime(2020, 12, 01).
"""
year = 2000 + int(future[4: 6])
month = convert_letter_symbol_month(future[3: 4])
return pd.datetime(year, month, 1).date()