如何根据指定Student值从DataFrame生成对应的Selected_Food变量?
根据指定Student值获取对应food列值的解决方案
问题背景
现有包含Student和food列的DataFrame,需根据任意指定的Student值,提取对应的food值赋值给Selected_Food变量。原代码仅支持Student=1,无法适配其他值。
DataFrame生成代码:
import pandas as pd data={'Student':[1,2,3,4],'food':['R0100000', 'R0200000', 'R0300000', 'R0400000']} df=pd.DataFrame(data)
原代码问题分析
原代码通过固定行索引0取值,仅当Student=1恰好位于第0行时生效,无法适配其他Student值:
if(df.Student==1): Selected_food=df.loc[0,"food"]
可行解决方案
方案1:布尔索引过滤取值
通过布尔条件筛选目标行,再提取对应food值:
# 指定目标Student值 target_student = 3 # 筛选对应行并提取food值 selected_food = df[df['Student'] == target_student]['food'].values[0]
说明:若Student值唯一,.values[0]可确保取出唯一匹配的结果。
方案2:使用loc结合条件查询
直接通过loc同时指定行条件和列名:
target_student = 2 selected_food = df.loc[df['Student'] == target_student, 'food'].iloc[0]
说明:loc返回符合条件的行,iloc[0]取出第一行(唯一行)的food值。
方案3:设置Student为索引(适合频繁查询)
若需多次查询,将Student设为索引可提升效率:
# 将Student列设为索引(仅需执行一次) df.set_index('Student', inplace=True) # 指定目标Student值并查询 target_student = 4 selected_food = df.loc[target_student, 'food']
说明:设置索引后,可直接通过索引值快速定位对应行的food值。
注意事项
确保Student列的值唯一,否则上述方法会返回多个结果,需根据需求处理(如取第一个值或抛出异常)。
内容的提问来源于stack exchange,提问作者Aragorn64
相关产品推荐
相关产品推荐

