如何在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
相关产品推荐
相关产品推荐

