You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas基于字符串类别的bins列过滤返回空DataFrame问题求助

问题原因
  • 你的bins列是字符串格式,直接用字符串做大小比较是逐字符按ASCII码判断,完全不符合区间的实际数值大小逻辑,所以筛选结果不符合预期
  • 你写的df.query()存在语法错误,条件中的字符串值没有加引号,本身无法正确执行
可行解决方案

方法1:提取区间左边界数值做筛选

先提取每个bins区间的左边界转为浮点型,再基于数值筛选大于等于11的行即可,无需保留辅助列:

df_filtered = df[df['bins'].str.split(' - ', expand=True)[0].astype(float) >= 11]

如果需要保留左边界字段后续使用,可以拆分写:

# 提取区间左边界转为浮点型存入新列
df['bins_left'] = df['bins'].str.split(' - ', expand=True)[0].astype(float)
# 筛选左边界大于等于11的行
df_filtered = df[df['bins_left'] >= 11]

方法2:使用query语法实现筛选

需要指定engine为python以支持字符串处理方法:

df_filtered = df.query("bins.str.split(' - ', expand=True)[0].astype(float) >= 11", engine='python')
最终输出

筛选后的结果如下,仅保留bins为11.0 - 12.0的两行:

bins     A    C   D
11.0 -  12.0  12.0  0.2  24
11.0 -  12.0  12.0  0.2  24

内容的提问来源于stack exchange,提问作者user3459293

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 22:36:02