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

如何在Pandas中依据动态列索引跨DataFrame提取对应值?

解决方案:根据reference列从另一个DataFrame匹配对应值

方法1:使用DataFrame.lookup(高效推荐)

lookup是pandas专门用于按行、列标签匹配取值的方法,效率优异,适合处理较大数据集:

# df2的列名为字符串类型,需将df1的reference转为字符串以匹配列名
df1['output'] = df2.lookup(df1.index, df1['reference'].astype(str))

方法2:使用apply逐行匹配(直观易懂)

如果数据量不大,apply的逻辑更直白,适合快速验证需求:

df1['output'] = df1.apply(
    lambda row: df2.loc[row.name, str(row['reference'])],
    axis=1
)

方法3:转置合并(灵活通用)

将df2转为长格式后通过合并操作实现匹配,适合需要扩展后续逻辑的场景:

# 将df2转换为长格式
df2_melted = df2.reset_index().melt(
    id_vars='date',
    var_name='reference',
    value_name='output'
)
# 统一reference的类型,与df1匹配
df2_melted['reference'] = df2_melted['reference'].astype(int)
# 合并df1与转换后的df2
df1 = df1.reset_index().merge(df2_melted, on=['date', 'reference']).set_index('date')

执行任意上述方法后,df1会生成期望的结果:

reference  output
date                         
2023-01-01          1       9
2023-01-02          2       5
2023-01-03          3       7
2023-01-04          4       4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 22:45:12