如何提取Python表格中ID在指定列表内的行对应的age列数值?
现有代码问题分析
- 你之前已经通过集合交集算出了符合条件的ID列表,但后续
for x in Table["ID"]的写法直接覆盖了之前的x变量,完全没有用到已经算好的交集结果 - 循环内直接打印
Table["age"]是输出整个age列的所有值,没有和当前循环的ID做匹配
修复方案
首先默认你的Table是pandas的DataFrame对象(符合你给出的Table["列名"]的索引写法),有两种实现方式:
1. 匹配你原有思路的循环写法(新手更易理解)
y = [4,5,2,6] # 先取同时存在于表格ID和y列表中的目标ID集合 target_ids = set(Table["ID"]) & set(y) # 遍历表格每一行做判断 for _, row in Table.iterrows(): if row["ID"] in target_ids: # Python3环境请把下行改为print(row["age"]) print row["age"]
运行后会按表格里的行顺序输出21(ID=2的age)、23(ID=4的age)。
2. pandas内置方法(更简洁高效,无需手动写循环)
pandas提供了isin方法直接判断列值是否在指定列表中,一行代码就能完成筛选:
y = [4,5,2,6] # 筛选ID在y中的行,提取age列 age_result = Table.loc[Table["ID"].isin(y), "age"] print(age_result)
内容的提问来源于stack exchange,提问作者Canyon park
相关产品推荐
相关产品推荐

