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

如何基于原始值生成符合数值范围的DataFrame全组合多行数据

生成满足条件的多变量组合DataFrame代码实现

需求说明

给定初始变量:a=3、b=10、c=1,需创建包含a、b、c三列的DataFrame,要求:

  • 每列取值为原始值加减指定常数(示例中常数为1)
  • 取值需满足0 < 值 ≤ 10
  • DataFrame包含所有符合条件的a、b、c取值组合

实现代码

import pandas as pd
from itertools import product

# 初始值与指定常数
initial_vals = {'a': 3, 'b': 10, 'c': 1}
constant = 1

# 生成每个变量的候选值列表
candidates = {}
for col, val in initial_vals.items():
    # 生成加减常数后的所有可能值,再筛选符合0 < x ≤10的
    possible = [val - constant, val, val + constant]
    candidates[col] = [x for x in possible if 0 < x <= 10]

# 生成所有候选值的笛卡尔积组合,转为DataFrame
all_combinations = list(product(candidates['a'], candidates['b'], candidates['c']))
df_result = pd.DataFrame(all_combinations, columns=['a', 'b', 'c'])

print(df_result)

代码说明

  1. 候选值生成:遍历每个初始变量,生成原始值-常数、原始值、原始值+常数三个可能值,再通过列表推导式筛选出满足0 < x ≤10的有效取值。
  2. 组合生成:使用itertools.product计算所有变量候选值的笛卡尔积,得到所有合法的组合。
  3. DataFrame转换:将组合列表转为指定列名的DataFrame,完成需求。

输出结果

运行代码后会输出包含所有合法组合的DataFrame:

a   b  c
0   2   9  1
1   2   9  2
2   2  10  1
3   2  10  2
4   3   9  1
5   3   9  2
6   3  10  1
7   3  10  2
8   4   9  1
9   4   9  2
10  4  10  1
11  4  10  2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:15:34