You need to enable JavaScript to run this app. Pandas无键大DataFrame如何通过参考DF的行列值提取对应数据
优惠活动
大模型
产品
解决方案
定价
更多

Pandas无键大DataFrame如何通过参考DF的行列值提取对应数据

错误原因

你此前的写法报错是因为iloc[行范围, 列范围]的语法仅支持传入单个索引值、连续范围切片、布尔数组三种参数类型,无法直接传入两个Series作为逐行对应的坐标对取值,因此触发类型错误。

最优实现方案

完全不需要额外做格式转换,直接利用Pandas DataFrame底层numpy数组的高级整数索引特性即可实现,属于纯向量化操作,性能最高,尤其适配你提到的大型纯数值矩阵场景:

import pandas as pd
import numpy as np

# 构造示例数据
M = pd.DataFrame(np.random.rand(4,5))
N = pd.DataFrame({'A':[2,2,2],'B':[2,3,4]})

# 核心赋值逻辑,to_numpy()为pandas官方推荐的取底层数组方法,兼容性优于旧版的.values属性
N['extracted values'] = M.to_numpy()[N['A'], N['B']]
可选实现(仅适合小数据量场景)

如果不想调用底层numpy数组,也可以用逐行apply的方式实现,但该方案本质是循环遍历,数据量越大性能差距越明显,不推荐大型矩阵使用:

N['extracted values'] = N.apply(lambda row: M.iloc[row['A'], row['B']], axis=1)

两种方案输出结果均符合你的预期要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 14:36:05