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

如何根据给定区间表的取值范围筛选DataFrame中的对应行

实现思路
  • 第一步:先把区间表中的所有有效区间提取出来,统一存为(起始值, 结束值)的整数元组列表,空值直接跳过
  • 第二步:遍历待筛选的DataFrame的colour列,判断每个值是否至少落在一个提取好的区间内,保留符合条件的行
可运行代码示例
import pandas as pd

# 1. 提取所有有效区间,如果你是从文件读取区间表,可参考后续的自动提取代码
intervals = [
    (1,5), (654,678), (11,15),
    (88761,88776), (1211,1215),
    (38,47), (89,95), (1567,1578)
]

# 2. 构造待筛选的DataFrame,实际使用时可替换为从csv/数据库读取的逻辑
df = pd.DataFrame({
    'Supplier': ['Abi', 'John', 'Smith', 'Tim', 'Don'],
    'colour': [1, 678, 120, 1570, 87560]
})

# 3. 筛选符合条件的行
filtered_df = df[df['colour'].apply(lambda x: any(start <= x <= end for start, end in intervals))]

# 打印结果
print(filtered_df)
区间表自动提取代码(可选)

如果你需要从原始区间表自动生成区间列表,可使用以下逻辑:

# 假设你已经把原始区间表读取为range_df对象
range_df = pd.read_csv("你的区间表文件路径")

intervals = []
# 遍历所有存储区间的列
for col in ["blue", "green", "yellow", "purple"]:
    # 跳过空值,拆分区间转为整数元组
    for val in range_df[col].dropna():
        start, end = map(int, val.split(","))
        intervals.append((start, end))
运行结果
Supplier  colour
0      Abi       1
1     John     678
3      Tim    1570

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 01:15:03