python - 为什么数据框中的日期分配不是日期类型?
问题描述
DataFramedf_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)")
检索符号日期时间()
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()
解决方案
有问题categorical
列,一种可能的解决方案是将其分类并date
用于floor
删除时间:
df_vol['maturity'] = pd.to_datetime(df_vol['maturity'].astype(str))
df_vol['date'] = df_vol.index.floor('d')
df_vol['diff'] = (df_vol['maturity'] - df_vol['date']).dt.days
print (df_vol)
maturity date diff
2018-11-01 11:31:53.023 2022-04-01 2018-11-01 1247
2018-11-01 16:30:15.287 2022-04-01 2018-11-01 1247
2018-11-01 10:23:06.779 2022-10-01 2018-11-01 1430
2018-11-01 16:30:15.291 2022-10-01 2018-11-01 1430
2018-11-01 11:30:56.251 2018-12-01 2018-11-01 30
推荐阅读
- javascript - 在其他类中使用类属性
- python - 无法使用pyqt5显示秒表
- c# - 关注 CefSharp WPF 组件中错误处理方法的问题
- c# - 如何在本地机器上运行.net项目
- visual-studio - VS2019 Pre 和 Post 构建事件总是以代码 1 失败
- amazon-web-services - 通过 CloudFormation 部署 AWS UserPool 并更新属性
- jsonschema - 在 json 模式项中具有多个属性
- android - 旋转可绘制/渐变
- node.js - 需要帮助来确定问题
- embedded - Segger Embedded Studio 链接错误 STM32F7