时间序列数据时间区间筛选失败,如何正确选择指定列数值范围?
解决时间序列数据的数值范围筛选问题
排查方向与解决方案
1. 检查列的数据类型
你的代码逻辑本身没问题,但得到空DataFrame最常见的原因是unit_time列不是数值类型(比如存储为字符串),导致数值比较失效。先确认数据类型:
print(data_frame['unit_time'].dtype)
如果输出是object,说明是字符串类型,需要先转换为数值类型:
# 转换为数值,无法转换的会设为NaN data_frame['unit_time'] = pd.to_numeric(data_frame['unit_time'], errors='coerce') # 移除转换后产生的NaN行(可选,根据需求) data_frame = data_frame.dropna(subset=['unit_time'])
2. 使用更简洁的筛选方法
转换类型后,除了原有的逻辑,还可以用between()方法更直观地实现区间筛选:
df = data_frame[data_frame['unit_time'].between(360, 1000, inclusive='both')]
inclusive='both'表示包含两端的数值,这是默认值,可以省略。
3. 验证数据是否真的存在目标区间值
如果转换类型后还是空结果,直接查看unit_time的实际分布,确认是否有360-1000之间的数据:
print(data_frame['unit_time'].min(), data_frame['unit_time'].max()) print(data_frame['unit_time'].value_counts().sort_index())
内容的提问来源于stack exchange,提问作者Haseeb Tariq
相关产品推荐
相关产品推荐

