gpt4 book ai didi

python - 为什么数据框中的日期分配不是日期类型?

转载 作者:行者123 更新时间:2023-11-28 18:05:58 27 4
gpt4 key购买 nike

df_vol DataFrame 创建如下

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()

最佳答案

categorical 列有问题,一种可能的解决方案是 decategorical 它,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

关于python - 为什么数据框中的日期分配不是日期类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53460346/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com