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

Python DataFrame操作:生成区间数值列表及提取flag=1的区间值

Python DataFrame 数值区间相关问题解答

1. 生成两个数值之间的数值列表

根据场景不同,有两种常见实现方式:

单组数值生成区间

如果是已知单个最小值和最大值,直接用range()生成(注意range是左闭右开,所以最大值需要+1):

min_num = 1
max_num = 9
num_list = list(range(min_num, max_num + 1))
# 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9]

DataFrame多行批量生成区间

如果DataFrame中每行都有min_val和max_val列,用apply遍历每行生成对应区间:

import pandas as pd

df = pd.DataFrame({'min_val': [1, 16], 'max_val': [9, 25]})
df['num_range'] = df.apply(lambda row: list(range(row['min_val'], row['max_val'] + 1)), axis=1)
# 生成的df会新增num_range列,每行对应一个区间列表

2. 提取flag=1分组的数值区间并合并为筛选列表

按照需求,步骤如下:筛选flag为1的行 → 遍历生成每个区间的数值 → 合并为最终列表:

代码实现

import pandas as pd

# 模拟你的结果集(替换为实际DataFrame)
df = pd.DataFrame({
    'flag': [1, 0, 1],
    'min_val': [1, 10, 16],
    'max_val': [9, 15, 25]
})

# 1. 筛选flag=1的行
filtered_rows = df[df['flag'] == 1]

# 2. 遍历生成所有区间数值并合并
result = []
for _, row in filtered_rows.iterrows():
    result.extend(range(row['min_val'], row['max_val'] + 1))

# 3. 排序(若有重叠区间可先去重)
result = sorted(result)

print(result)
# 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]

简洁写法(列表推导式)

result = sorted([num for _, row in filtered_rows.iterrows() 
                 for num in range(row['min_val'], row['max_val'] + 1)])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 17:12:47