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

Pandas如何根据行中flag列的取值获取对应名称列的数值

Pandas逐行匹配flag列取对应列值实现方案

实现方法

方案1:矢量化操作(最优性能,适合十万行以上大数据集)

利用numpy数组索引实现,避免逐行遍历开销:

import pandas as pd
import numpy as np

# 构造示例DataFrame
df = pd.DataFrame(data={'flag': ['col3', 'col2', 'col2'],
                        'col1': [1, 3, 2], 
                        'col2': [5, 2, 4], 
                        'col3': [6, 3, 6], 
                        'col4': [0, 4, 4]},
                        index=pd.Series(['A', 'B', 'C'], name='index'))

# 核心逻辑
# 获取flag列对应的列位置索引
col_pos = df.columns.get_indexer(df['flag'])
# 按行号+列位置取对应值生成新列
df['col_val'] = df.to_numpy()[np.arange(len(df)), col_pos]

方案2:逐行apply(写法简单,适合小数据集)

代码更简洁易懂,数据量小时足够使用:

df['col_val'] = df.apply(lambda x: x[x['flag']], axis=1)

结果验证

运行后输出df即可得到预期结果,col_val列会逐行取flag指定列的对应数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:57:02