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

如何使用Python的.loc函数实现Excel VLOOKUP功能生成计算用DataFrame子集

实现Excel对应LOOKUP公式的Pandas解决方案

你需要实现的Excel公式IFERROR(LOOKUP(2,1/($D$1:D1=D2),$Q$1:Q1),0)的核心逻辑为:对每行数据,匹配当前行上方所有D列取值与当前行D列相等的记录,取最近一条的Q列值,无匹配则返回0。你可以直接用Pandas的内置向量化操作实现,不需要手动指定.loc的位置参数,处理大数据量时效率远高于手动循环。

示例代码

1. 导入依赖与构造测试数据

import pandas as pd

# 示例DataFrame,仅保留核心的D、Q两列,你可以替换为自己的实际数据
df = pd.DataFrame({
    'D': ['品类1', '品类2', '品类1', '品类1', '品类2', '品类3'],
    'Q': [10, 20, 30, 40, 50, 60]
})

2. 核心实现(仅需1行代码)

# 计算结果存入new_Q列,可根据需求修改列名
df['new_Q'] = df.groupby('D')['Q'].shift(1).fillna(0).astype(int)

执行效果验证

运行后得到的DataFrame结果如下,和Excel公式的计算结果完全一致:

行号DQnew_Q
0品类1100
1品类2200
2品类13010
3品类14030
4品类25020
5品类3600

代码逻辑说明

  • groupby('D'):将D列取值相同的行归为同一组,对应公式中筛选同D值记录的逻辑
  • shift(1):取每组内当前行的上一行Q列值,对应取当前行上方最近匹配记录的逻辑
  • fillna(0):每组第一行没有上一行数据时填充0,对应公式中IFERROR(...,0)的错误处理逻辑
  • astype(int):可选,根据你的数据类型调整,保证输出格式符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:15:02