Pandas依据f列值筛选a列元素,query查询返回空Series问题求解
问题根因
- f列存在
1m类字符串值,pandas读取时会将整列判定为字符串(object)类型,你使用f==2的条件是和整数做匹配,类型不匹配导致无匹配结果。 - 你提供的原始数据中,部分f列取值为2的行末尾带有多余空格,就算直接和字符串
'2'匹配也会失败。
解决方法
方案1:清洗f列后永久生效
先对f列做标准化处理,再执行查询:
# 移除f列值的首尾空白,提取纯数字部分后转为浮点型 df['f'] = df['f'].str.strip().str.extract(r'(\d+\.?\d*)').astype(float) # 执行查询 elements = df.query('f == 2')['a']
方案2:不修改原数据的临时查询
# 直接对f列做临时处理后匹配字符串2 elements = df[df['f'].str.strip() == '2']['a']
内容的提问来源于stack exchange,提问作者user16454053
相关产品推荐
相关产品推荐

