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

基于双变量的数值映射:如何匹配公司与日期关联评级数据

基于双变量(公司+日期)的数据关联方法

问题说明

现有两张数据表:

  • 评级信息表:存储公司在指定日期的评级
  • 债务工具价格表:存储各公司不同债务工具在指定日期的价格

需要通过公司名称和日期两个字段匹配,将评级信息关联到债务工具价格表中。

评级信息表

Company    Date         Rating
A          2016-02-01   AAA
A          2016-02-02   AA
B          2016-02-01   BBB
B          2016-02-02   A

债务工具价格表

Company    Debt-Instrument     Date         Price
A          X1                  2016-02-01   100
A          X1                  2016-02-02   101
A          X2                  2016-02-01   98
A          X2                  2016-02-02   99
B          Y1                  2016-02-01   101
B          Y1                  2016-02-02   100
B          Y2                  2016-02-01   90
B          Y2                  2016-02-02   89

预期结果

Company    Debt-Instrument     Date         Price  Rating
A          X1                  2016-02-01   100    AAA
A          X1                  2016-02-02   101    AA
A          X2                  2016-02-01   98     AAA
A          X2                  2016-02-02   99     AA
B          Y1                  2016-02-01   101    BBB
B          Y1                  2016-02-02   100    A
B          Y2                  2016-02-01   90     BBB
B          Y2                  2016-02-02   89     A

主流工具实现方法

1. Excel 实现

方法一:INDEX+MATCH 多条件匹配

在债务工具表的Rating列(如E2单元格)输入公式:

=INDEX(评级表!$C$2:$C$5, MATCH(1, (债务工具表!A2=评级表!$A$2:$A$5)*(债务工具表!C2=评级表!$B$2:$B$5), 0))
  • 旧版Excel需按 Ctrl+Shift+Enter 触发数组计算,新版直接回车即可
  • 逻辑:通过(公司匹配)*(日期匹配)生成布尔数组,MATCH定位匹配位置,INDEX返回对应评级

方法二:XLOOKUP 多条件匹配(Excel 365/2021+)

新版Excel可直接用简化写法:

=XLOOKUP(1, (评级表!$A$2:$A$5=A2)*(评级表!$B$2:$B$5=C2), 评级表!$C$2:$C$5)

2. Python Pandas 实现

使用merge方法,指定两个关联键:

import pandas as pd

# 构造示例数据
rating_df = pd.DataFrame({
    'Company': ['A', 'A', 'B', 'B'],
    'Date': ['2016-02-01', '2016-02-02', '2016-02-01', '2016-02-02'],
    'Rating': ['AAA', 'AA', 'BBB', 'A']
})

debt_df = pd.DataFrame({
    'Company': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
    'Debt-Instrument': ['X1', 'X1', 'X2', 'X2', 'Y1', 'Y1', 'Y2', 'Y2'],
    'Date': ['2016-02-01', '2016-02-02', '2016-02-01', '2016-02-02', '2016-02-01', '2016-02-02', '2016-02-01', '2016-02-02'],
    'Price': [100, 101, 98, 99, 101, 100, 90, 89]
})

# 左关联保留债务工具表所有数据
result_df = pd.merge(debt_df, rating_df, on=['Company', 'Date'], how='left')
print(result_df)

3. SQL 实现

通过LEFT JOIN关联两张表,ON条件同时匹配公司和日期:

SELECT 
    d.Company,
    d.`Debt-Instrument`,
    d.Date,
    d.Price,
    r.Rating
FROM debt_instruments d
LEFT JOIN ratings r 
    ON d.Company = r.Company 
    AND d.Date = r.Date;

内容的提问来源于stack exchange,提问作者Elias K.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:33:23