Python如何提取DataFrame指定分类的对应值存入列表
错误原因
你的代码存在两个核心问题:
- 循环判断逻辑和取值逻辑不匹配:遍历
Zip Code列的每个值时,触发条件后直接取了整个Score列赋值给listData,没有取当前行对应的Score值 - 赋值逻辑错误:触发条件时用的是
=赋值而非append()追加,只要有一个符合条件的邮编,listData就会被直接替换为整个Score列
解决方法
方法1:pandas向量化操作(推荐,性能远高于自定义循环)
直接按条件筛选行再提取Score列转列表即可,无需自行编写循环:
import pandas as pd amesData = pd.read_csv(fileName, usecols = ['Zip Code','Score']) listData = amesData.loc[amesData['Zip Code'] == 78701, 'Score'].tolist()
方法2:修改原有循环写法
如果要保留你原有循环的实现思路,需要同步遍历索引,按索引取对应行的Score值后追加到列表:
amesData = pd.read_csv(fileName, usecols = ['Zip Code','Score']) listData =[] for idx, result in enumerate(amesData['Zip Code']): if result == 78701: listData.append(amesData.loc[idx, 'Score'])
内容的提问来源于stack exchange,提问作者user15200538
相关产品推荐
相关产品推荐

