使用df.loc查询mdavis@yahoo.com时出现KeyError如何解决
KeyError成因
pandas 中loc方法的默认取值逻辑是匹配行索引(index),你当前创建的DataFrame没有手动指定行索引,系统默认生成的是从0开始的连续整数索引,并不存在mdavis@yahoo.com这个字符串类型的索引值,因此触发KeyError。
正确查询方案
方案1:直接按email列值筛选(无需修改索引)
通过布尔掩码匹配email列符合要求的行,代码如下:
# 返回匹配结果的DataFrame df.loc[df['email'] == 'mdavis@yahoo.com'] # 如果确定只有一条匹配结果,想要直接拿到Series格式的单条数据,可以加.iloc[0] df.loc[df['email'] == 'mdavis@yahoo.com'].iloc[0]
方案2:将email设为行索引(适合高频按email查询的场景)
先把email列设置为DataFrame的行索引,之后就可以直接用你原有写法查询:
# 将email列设为行索引 df = df.set_index('email') # 直接按索引查询即可得到对应条目 df.loc['mdavis@yahoo.com']
内容的提问来源于stack exchange,提问作者Rubayet Alam
相关产品推荐
相关产品推荐

