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

pandas中使用分类器输出筛选DataFrame每行对应列元素的实现方案

实现方案

方法1:使用NumPy高级索引(性能最优,适合大数据量场景)

直接利用numpy数组的花式索引特性,一次性匹配所有行对应的列位置,时间复杂度为O(n),性能远高于逐行遍历:

import pandas as pd
import numpy as np

data = {'zero':[1,2,3], 'one':[4,5,6], 'two':[7,8,9]}
df = pd.DataFrame(data)
clf = [1,0,2]

# 核心代码
output = df.values[np.arange(len(df)), clf].tolist()
print(output) # 输出 [4, 2, 9]

原理说明:np.arange(len(df))生成和行数等长的行索引序列,和clf的列索引序列一一对应,直接从DataFrame对应的numpy数组中提取对应位置的元素。

方法2:使用apply逐行提取(写法直观,适合小数据量场景)

如果数据量不大,追求写法的可读性,可以用pandas的行遍历方法实现:

output = df.apply(lambda row: row.iloc[clf[row.name]], axis=1).tolist()
print(output) # 输出 [4, 2, 9]

原理说明:row.name获取当前行的索引位置,匹配clf中对应位置的列索引,提取该行对应列的元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:39:05