You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何匹配覆盖同期但缺失不同日期的两组利率时间序列?

匹配两组时间序列并计算利差的简便方法

嘿,这个需求我太熟了!不管你用Excel还是Python,都有很简便的办法搞定,分两种常用场景给你拆解:

方法一:用Excel处理

场景1:删除长序列的额外日期(仅保留两组都有的交易日)

假设全日历日数据在A列(日期)和B列(利率),交易日数据在C列(日期)和D列(利率):

  • 新建一列(比如E列),在E2单元格输入公式:=XLOOKUP(A2,$C$2:$C$1000,$D$2:$D$1000,""),下拉填充整个E列。这个公式会把全日历日中属于交易日的利率匹配过来,非交易日则显示空白。
  • 选中E列,点击「数据」→「筛选」,筛选出非空白的行,删除空白行后,剩下的就是两组都有数据的日期,直接在新列计算B列 - E列就能得到利差。

场景2:给短序列补全日期(填充空白或插值)

如果想保留所有日历日,给交易日数据补全非交易日的内容:

  • 同样用XLOOKUP匹配:在D列旁新建F列,F2输入=XLOOKUP(A2,$C$2:$C$1000,$D$2:$D$1000,""),下拉后F列就和A列日期完全对应,非交易日显示空白。之后用IFERROR(B2-F2,"")计算利差,避免空白行出现错误值。
  • 如果需要插值(比如线性插值填补非交易日数据),可以用FORECAST.ETS函数:F2输入=FORECAST.ETS(A2,$D$2:$D$1000,$C$2:$C$1000),它会自动基于已有交易日数据对非交易日做时间序列插值。

方法二:用Python(Pandas库)处理

Pandas是处理时间序列的利器,几步就能完成对齐:

  1. 先读取两组数据为DataFrame(假设日期列名为date,利率列分别为rate_full和rate_trade):

    import pandas as pd
    # 读取全日历日数据,解析日期并设为索引
    df_full = pd.read_csv("full_dates.csv", parse_dates=["date"], index_col="date")
    # 读取交易日数据,同样处理日期索引
    df_trade = pd.read_csv("trade_dates.csv", parse_dates=["date"], index_col="date")
    
  2. 仅保留共同日期并计算利差:

    # 取两组数据的日期交集,自动对齐
    df_combined = df_full.join(df_trade, how="inner", lsuffix="_full", rsuffix="_trade")
    # 计算利差列
    df_combined["spread"] = df_combined["rate_full"] - df_combined["rate_trade"]
    

    运行后df_combined里就只有两组都有数据的日期,直接查看spread列即可。

  3. 补全短序列日期(填充空白或插值):

    # 将交易日数据重采样到全日历日,缺失值留空
    df_trade_full = df_trade.reindex(df_full.index)
    # 若需要线性插值填充缺失值,替换为下面一行
    # df_trade_full = df_trade.reindex(df_full.index).interpolate(method="linear")
    
    # 合并数据并计算利差
    df_combined = pd.concat([df_full, df_trade_full], axis=1)
    df_combined["spread"] = df_combined["rate_full"] - df_combined["rate_trade"]
    

内容的提问来源于stack exchange,提问作者Mike B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:06:37