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

如何基于UTCs字段的数值范围筛选Pandas DataFrame的行子集?

基于Pandas DataFrame列值范围筛选行的解决方案

我来帮你搞定这个问题——直接通过UTCs列的数值范围筛选行完全不需要依赖行号,这里有几种简单好用的方法:

方法1:布尔索引(基础且灵活)

直接构造布尔条件来筛选符合要求的行,注意要用&连接多个条件,并且每个条件要加括号(避免运算符优先级问题):

df_sub = df[(df['UTCs'] >= 32778) & (df['UTCs'] <= 32782)]

方法2:使用between方法(简洁直观)

Pandas的between方法专门用来处理范围筛选,默认包含两端的边界值,正好匹配你的需求:

df_sub = df[df['UTCs'].between(32778, 32782)]

如果需要排除边界值,可以添加参数inclusive='neither',不过这里你需要包含32778和32782,所以默认设置就够用了。

方法3:使用query方法(类自然语言语法)

query方法允许你用字符串形式编写筛选条件,语法更贴近日常表达,适合复杂筛选场景:

df_sub = df.query('32778 <= UTCs <= 32782')

为什么你之前的写法行不通?

你尝试的df.iloc[df[df.UTCs == 32778] : df[df.UTCs == 32783], : ]写法错误,因为iloc接收的是整数位置的切片或索引,而df[df.UTCs == 32778]返回的是一个子DataFrame,不是整数类型的索引值,所以无法用来做切片。

验证结果

以上三种方法得到的结果和你用iloc[2:7,:]完全一致:

UTCs  Temperature  Humidity  pressure
2  32778            7        48       999
3  32779            9        47       999
4  32780           12        46       999
5  32781            9        47       999
6  32782            9        48      1000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 21:12:32