首页 > 解决方案 > 减去特定的日期时间对象

问题描述

我需要通过查找“成熟度”和“trd_exctn_dt”之间的差异来计算“到期时间”,如下所示。

如果我有以下示例数据:

cusip_id trd_exctn_dt 到期 time_to_maturity
0007TAA2 2015-01-26 2023-05-15 3031天
0007TAA2 2015-03-26 2023-05-15 2972天
0007TAA2 2015-05-01 2023-05-15 2936天
0007TAA2 2015-07-27 2023-05-15 2849天

我想要的输出是:

cusip_id trd_exctn_dt 到期 time_to_maturity
0007TAA2 2015-05-01 2023-05-15 2936天

对于这个特定的cusip_id,因为到期日在第5个月,所以我正在寻找第5个月的trd_exctn_dt,以便计算到期时间。但是,我想为几个债券发行这样做,其中“到期”不一定会在第 5 个月内发生。例如,对于另一个债券发行,到期日可能是 2023 年 11 月 6 日,因此我将在第 11 个月寻找该债券发行的 trd_exctn_dt。

任何关于我将如何做到这一点的想法将不胜感激!

标签: pythonpandasdataframetime-series

解决方案


此解决方案假定您想要maturity月份等于trd_exctn_dt月份的每一行。

代码

df.columns = [c.strip() for c in df.columns]  # Remove whitespace from column names

# Convert to datetime
df['trd_exctn_dt'] = pd.to_datetime(df['trd_exctn_dt']) 
df['maturity'] = pd.to_datetime(df['maturity'])

df['time_to_maturity'] = df['maturity'] - df['trd_exctn_dt']  # If you need to recalculate
df[df['trd_exctn_dt'].dt.month == df['maturity'].dt.month]  # Filter for same month in both columns

输出

    cusip_id    trd_exctn_dt    maturity    time_to_maturity
2   0007TAA2    2015-05-01      2023-05-15  2936 days

推荐阅读