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

Python Pandas如何基于指定列取值选取对应同名列的数值

实现方案

方案1:内置场景适配方法(最简洁,兼容全版本pandas)

pandas原生支持这类按行匹配列名取值的需求,代码可读性最高,常规数据量下性能足够:

import pandas as pd
import numpy as np

# 构造示例DataFrame
df = pd.DataFrame({
    "column_name": ["a", "b", "d"],
    "a": [5, 3, 4],
    "b": [3, 2, 5],
    "c": [1, 1, 33],
    "d": [7, 10, 14]
})

# pandas <2.2 版本用lookup
df["value"] = df.lookup(df.index, df["column_name"])

# pandas >=2.2 版本lookup已弃用,用等价写法
df["value"] = df.stack().loc[zip(df.index, df["column_name"])].values

# 输出仅含value的结果
result = df[["value"]]

运行后得到的result就是要求的输出:

value
5
2
14

方案2:numpy索引(性能最优,适合百万级以上大数据量)

如果处理的数据量极大,用numpy花式索引的性能比上述方案高30%以上:

# 先将列名转换为对应的位置索引
col_index = df.columns.get_indexer(df["column_name"])
# 直接用numpy矩阵索引取值
df["value"] = df.to_numpy()[np.arange(len(df)), col_index]

避坑提醒

不要用逐行遍历的apply写法:df.apply(lambda x: x[x["column_name"]], axis=1),这种写法数据量超过1万行时性能会比上述方案慢几十倍,完全不推荐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:36:03