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

如何在Pandas中根据某列的值提取另一列的值

Pandas根据列值提取对应列内容的几种方法

先确认你的DataFrame初始化代码(方便复现):

import pandas as pd

df = pd.DataFrame({
    'Name': ['Jim', 'Tom', 'Sid'],
    'Age': [19, 25, 33],
    'City': ['NY', 'LA', 'PH']
})

下面是几种实用的实现方式:

1. 布尔索引直接筛选

最基础的写法,先筛选出符合City条件的行,再提取Name列:

# 获取City为PH对应的Name
target_name = df[df['City'] == 'PH']['Name'].values[0]
print(target_name)  # 输出 Sid

如果不确定匹配结果的数量,用.tolist()拿到所有匹配值的列表更稳妥:

target_names = df[df['City'] == 'PH']['Name'].tolist()
print(target_names)  # 输出 ['Sid']

2. 使用loc方法(推荐,可读性更高)

loc支持同时定位行和列,语法更清晰:

target_name = df.loc[df['City'] == 'PH', 'Name'].values[0]
print(target_name)  # 输出 Sid

3. 设置City为索引后快速查询

如果需要多次根据City查询,先把City设为索引,后续查询更高效:

# 将City设为索引
df.set_index('City', inplace=True)
# 直接通过索引取值
target_name = df.loc['PH', 'Name']
print(target_name)  # 输出 Sid

# 如需恢复原索引,执行下面的代码
# df.reset_index(inplace=True)

4. 用query方法简化语法

如果喜欢更接近自然语言的查询写法,可以用query:

target_name = df.query("City == 'PH'")['Name'].values[0]
print(target_name)  # 输出 Sid

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:16:04