如何基于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
相关产品推荐
相关产品推荐

